【发布时间】:2017-07-06 05:20:13
【问题描述】:
我正在创建一个程序,其中服务器可以接收来自多个客户端的消息。客户端将创建连接并在单击按钮后发送信息,然后关闭连接(不是来回实时聊天程序)。
我现在遇到的问题是我运行服务器程序类,然后运行两个客户端程序两次(模拟两个用户连接)。但是,当我发送有关第二个创建的客户端类的信息时,直到第一个客户端关闭后,它才会通过或处理。
这也是我第一次使用套接字和线程,所以任何关于我做错了什么的建议都将不胜感激
我现在只是通过 static void mains 调用方法
new Server().runServer();
public void runServer() throws SocketException, IOException{
serverSocket = new ServerSocket(PORT);
System.out.println("Server up");
while(true){
Socket socket = serverSocket.accept();
new ServerThread(socket).run();
}
}
public class ServerThread extends Thread{ //
Socket socket;
ServerThread(Socket socket){
this.socket = socket;
}
@Override
public void run(){
try {
String message = null;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while ((message = bufferedReader.readLine()) != null){
Server.addToQueue(message);
}
} catch (IOException ex) {
} finally{
try {
if (socket != null)
socket.close();
} catch (IOException ex) {
}
}
}
}
} 客户端代码如下:
public class Client {
public static void main(String[]args){
sendToServer();
}
public static void sendToServer(){
String readerInput;
Socket socket = null;
PrintWriter printWriter = null;
try {
socket = new Socket("localhost", 4444);
printWriter = new PrintWriter(socket.getOutputStream(), true);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
readerInput = bufferedReader.readLine();
printWriter.println(readerInput);
} catch (IOException ex) {
} finally{
try {
socket.close();
} catch (IOException ex) {
}
}
}
}
【问题讨论】:
标签: java sockets server client chat