没有开线程之前服务端开启之后总是卡死,必须用资源管理器才能结束任务,后来我打算用线程来负责跟客户端的通信,发现无论开几个客户端,线程名都一样,应该是共用线程了,难道是我两个客户端运行在一个机器上了??现在问题就在于两个客户端共用一个线程与服务端通信查询不同数据时,查询的数据是否是自己需要的数据?代码贴出来
ok.addActionListener(new ActionListener() {//单击按钮开启服务端
@Override
public void actionPerformed(ActionEvent arg0) {
tip.setText(" 服务端已启动_");
CreateThread ct=new CreateThread();
Thread t1=new Thread(ct);//建立线程
t1.start(); //线程共用问题应该是在这
}
});
Run():
@Override
public void run() {
try {
startSocket();//不开线程直接调用startSocket()会导致服务端卡死
} catch (IOException e) {
System.out.println("服务端口已开启");
}
}
接收客户端请求的startSocket():
private void startSocket() throws IOException {
ServerSocket ss=new ServerSocket(6666);
Socket server=null;
while(true) {
//System.out.println(server);
server=ss.accept();
if(server!=null) {
System.out.println(server);
InputStream is=server.getInputStream();
byte[] message=new byte[1024];
int len=is.read(message);
String msg=new String(message,0,len);
is.close();
server.close();
}
}
}