客户端发送的消息后,客户端必须断开重新连接,服务器才能收到信息
1.SocketServer等待客户端连接
package com.hiaward.xtranssvc.socket;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
public class SocketServer extends HttpServlet {
final static int PORT = 8765;
public void init() throws ServletException {
Thread t = new Thread(new Runnable() {
ServerSocket server = null;
public void run() {
BufferedReader in = null;
PrintWriter out = null;
try {
server = new ServerSocket(PORT);
Socket socket = null;
HandlerExecutorPool executorPool = new HandlerExecutorPool(50, 1000);
try {
while(true){
socket = server.accept();
executorPool.execute(new ServerHandler(socket));
}
} catch (Exception ex) {
System.out.println("---"+ex);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("---"+e);
} finally {
if(in != null){
try {
in.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}
if(out != null){
try {
out.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
if(server != null){
try {
server.close();
} catch (Exception e3) {
e3.printStackTrace();
}
}
server = null;
}
}
});
t.start();
}
}
2.客户端连接后,进行处理,能接收到请求,但是消息必须要客户端断开后才能收到消息
package com.hiaward.xtranssvc.socket;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import com.hiaward.xtranssvc.database.TermDb;
import com.hiaward.xtranssvc.entity.Term;
import com.hiaward.xtranssvc.socket.SocketToTerm;
public class ServerHandler implements Runnable {
private Socket socket;
public ServerHandler (Socket socket){
this.socket = socket;
}
public void run() {
System.out.println("run");
BufferedReader in = null;
PrintWriter out = null;
try {
in = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
out = new PrintWriter(this.socket.getOutputStream(), true);
String body = null;
while(true){
System.out.println("body = in.readLine()前");
body = in.readLine();
System.out.println("body = in.readLine()后body=" + body);
if(body == null){
System.out.println("null" );
break;
}
//将信息在页面显示
out.print("1");
out.flush();
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if(in != null){
try {
in.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}
if(out != null){
try {
out.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
if(socket != null){
try {
socket.close();
} catch (Exception e3) {
e3.printStackTrace();
}
}
socket = null;
}
}
}
求大神看看