lat*_*ata 4 java sockets serversocket
我想创建能够与多个客户端连接的服务器.我的主要功能是:
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(5556);
} catch (IOException ex) {
Logger.getLogger(MakaoServer.class.getName()).log(Level.SEVERE, null, ex);
}
while (true) {
try {
Socket connection = serverSocket.accept();
PlayerConnection playerConn = new PlayerConnection(connection);
playerConn.start();
} catch (IOException ex) {
System.out.println("Nie mo?na by?o utworzy? gniazda.");
}
}
Run Code Online (Sandbox Code Playgroud)
PlayerConnection是一个Thread类.运行方法:
public void run() {
InputStream input = null;
while (true) {
try {
input = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
String msg = reader.readLine();
System.out.println(msg);
} catch (IOException ex) {
Logger.getLogger(PlayerConnection.class.getName()).log(Level.SEVERE, null, ex);
} finally {
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行客户端并向服务器发送消息时,它已收到,但在下一个while循环迭代connection.getInputStream(); 抛出一个Socket异常套接字已关闭.为什么?
java.net.SocketException: socket closed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:150)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:154)
at java.io.BufferedReader.readLine(BufferedReader.java:317)
at java.io.BufferedReader.readLine(BufferedReader.java:382)
at makaoserver.PlayerConnection.run(PlayerConnection.java:38)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35179 次 |
| 最近记录: |