(Ezzz:本文是根据网上相关文章再加工而成)
XMLSocket(服务器+客户端)代码,包含解决中文问题
//Flash code
System.useCodepage=true;
var mySocket:XMLSocket = new XMLSocket();
//本地地址,端口3000
mySocket.connect("localhost", 3000);
//事件
mySocket.onConnect = function(myStatus) {
if (myStatus) {
trace("连接成功!");
//发送信息
mySocket.send("发送中文"+"\n");
trace("发送成功!");
} else {
trace("连接失败!");
}
};
//接受信息事件
mySocket.onData = function(msg:String) {
trace("接受到的内容:"+msg);
};
//Java code
package test;
import java.io.*;
import java.net.*;
public class LocalServer {
protected int listenPort = 3000;
public void acceptConnections() {
try {
ServerSocket server = new ServerSocket(this.listenPort);
// 在服务器端,我们需要ServerSocket对象以便建立服务,参数是兼听的端口号
Socket incomingConnection = null;// 创建一个客户端的Socket变量,以接收从客户端监听到的Socket
// handleConnection处理
System.out.println("Server端正在等待一个socket连接......");
incomingConnection = server.accept();// 调用该 ServerSocket 的
// accept()来告诉它开始侦听
System.out.println("一个socket客户端已经连接过来......");
handleConnection(incomingConnection);
} catch (BindException e) {
System.out.println("Unable to bind to port " + listenPort);
} catch (IOException e) {
System.out.println("Unable to instantiate a ServerSocket on port: "
+ listenPort);
}
}
public void handleConnection(Socket incomingConnection) {
System.out.println("\r\n正在对此连接进行处理......\n");
try {
// 首先获取同Socket相关联的流outputToSocket和InputStream
// 其中outputToSocket是要返回给客户端Socket的流
// InputStream是客户端发来的请求
OutputStream outputToSocket = incomingConnection.getOutputStream();
InputStream inputFromSocket = incomingConnection.getInputStream();
BufferedReader streamReader = new BufferedReader(
new InputStreamReader(inputFromSocket));
// 发送信息
BufferedWriter streamWriter = new BufferedWriter(
new OutputStreamWriter(outputToSocket));
streamWriter.write("<msg>GOOD BOY</msg>\0");
streamWriter.flush();
// outputToSocket.close();
// 首先要将InputStream转换到BufferedReader中
String line = null;
while ((line = streamReader.readLine()) != null) {
System.out.println("Client message is [ " + line + " ]");
streamWriter.write("来自服务器 [ " + line + " ] \0");
streamWriter.flush();
// 从streamReader中读出信息,直接输出到默认输出设备中(本例中是指dos窗口)
}
System.out.println("\r\n\r\n接受信息完毕!");
// 完成之后关闭所有流,注意关闭Socket流的顺序
streamReader.close();
} catch (Exception e) {
System.out.println("Error handling a client: " + e);
}
}
// 主程序,建立sever实例对象,然后运行对象的acceptConnections()方法
public static void main(String[] args) {
LocalServer server = new LocalServer();
server.acceptConnections();
}
}