首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

java socket 有关问题 服务端实现多用户连接

2013-04-26 
java socket 问题服务端实现多用户连接public void run() {while (true) {try {is mySocket.getInputStr

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对象仍给一个子线成去处理,由这个子线程完成与某客户端的消息收、发,不耽误你主线程接收其它客户端请求的

热点排行