日期:2014-05-20  浏览次数:20621 次

java socket 问题 服务端实现多用户连接
public void run() {
while (true) {
try {
is = mySocket.getInputStream();
os = mySocket.getOutputStream();
if (is != null) {
if ((rlen = is.read(buffer)) != -1) {// 每次循环读两个字节
if (buffer[0] == 0 && buffer[1] == 0) {
// 提交一个命令
byte[] read = bos.toByteArray();
bos = new ByteArrayOutputStream();
if (read.length != 0) {
machine.OnReceive(read, read.length);
}
} else {
// 缓存数据
bos.write(buffer);
}
}
}
} catch (Exception e) {
System.out.println("命令接收出现异常");
SocketServer.close();
e.printStackTrace();
}
}
}
上面这段代码只能监听一个用户连接,而且读客户端数据是每次读两个字节,将mySocket = serverSocket.accept();放在while循环中去监听多个用户连接时,每次去读两个字节的判断就会不成功,大家帮我分析下怎样才能将客户端数据字节全部读完后,socket又能监听另一个用户的连接

------解决方案--------------------
当你接收到一个socket的客户端连接时,你就应该把这个socket对象仍给一个子线成去处理,由这个子线程完成与某客户端的消息收、发,不耽误你主线程接收其它客户端请求的