工作中没涉及有关JAVA SOCKET编程的实际经历,但理论大概了解。想正明一下自已的对JAVA SOCKET理解写个通信TEST,通过TEST验证了基本与理论相近。下面是TEST SRC CODE 如果有牛人指点一二在下谢谢了,想写个类似QQ的局网通信程序,可没有太多时间如果您有JAVA SRC CODE 请与我联系。
1.开发工具:eclips3.2
2.工程基本结构:
2.1 工程名:SocketTest
2.2 包test1.service含类功能说明:
2.2.1 KKMultiServerThread 服务端多线程处理类.
2.2.2 KnockKnockProtocol 双方通信协义处理类。
2.2.3 KnockKnockProtocolFace 双方通信协义处理接口。
2.2.4 MyService 服务端监听处理主方法类。
2.2.5 MyClient 客户端主方法类。
2.3 包test1.error含类功能说明:
2.3.1 ResponseError 服务端处理客户端响应异常类。
3.工程基本结构具体说明及原码。
2.1 工程名:SocketTest
2.2 包test1.service含类功能说明:
2.2.1 KKMultiServerThread 服务端多线程处理类.
package test1.service;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import test1.error.ResponseError;
/**
* @作者:刘家鸽
* @功能:服务端处理客户端请求返回响应(多线程)
*/
public class KKMultiServerThread extends Thread {
private Socket clentSocket = null;
private KnockKnockProtocol kkpf = null;
private PrintWriter pw = null;
private BufferedReader bir = null;
public KKMultiServerThread() {
super("KKMultiServerThread");
}
public KKMultiServerThread(Socket clentSocket) {
super("KKMultiServerThread");
this.clentSocket = clentSocket;
}
public KKMultiServerThread(Socket clentSocket, KnockKnockProtocolFace kkpf) {
super("KKMultiServerThread");
this.clentSocket = clentSocket;
this.kkpf = (KnockKnockProtocol) kkpf;
}
public Socket getClentSocket() {
return clentSocket;
}
public void setClentSocket(Socket clentSocket) {
this.clentSocket = clentSocket;
}
public KnockKnockProtocol getKkpf() {
return kkpf;
}
public void setKkpf(KnockKnockProtocol kkpf) {
this.kkpf = kkpf;
}
// 运行线程
public void run() {
try {
pw = new PrintWriter(clentSocket.getOutputStream());
bir = new BufferedReader(new InputStreamReader(clentSocket
.getInputStream()));
String request = bir.readLine();
System.out.println("客户端请求: " + request);
InetAddress ia = clentSocket.getInetAddress();
System.out.println("客户端ip:"+ia.getHostAddress());
String response = kkpf.processInput(request);
// 向客户端发送
System.out.println("返回客户端响应:" + response);
kkpf.sendResponse(pw, response);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ResponseError e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
System.out.println("关闭客户与服务端的连接");
this.pw.close();
this.bir.close();
this.clentSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
编辑推荐:怎样用Jvm处理Java数组
Java数组之初始化及实例代码
使用JSON做AJAX的数据传输介质