我已经知道,要想使服务端能连接多个客户端可以使用如下代码: while(true){
Socket socket = server.accept();
newThreadForSocket(socket);//有连接就新开线程去处理
}
但是例如A客户端连上了服务端,只能给服务端发送一次消息,socket就关闭了,如何在run方法中使他能处理A客户端不定时发送来的消息?也是while(true)?但是总是提示socket已经close的异常。。
求各位高手能指点一下不胜感激!!
Socket socket = server.accept();
newThreadForSocket(socket);//有连接就新开线程去处理
}
但是例如A客户端连上了服务端,只能给服务端发送一次消息,socket就关闭了,如何在run方法中使他能处理A客户端不定时发送来的消息?也是while(true)?但是总是提示socket已经close的异常。。
求各位高手能指点一下不胜感激!!
while(true){
socket = server.accept();
newThreadForSocket(socket);//有连接就新开线程去处理
}
socket自己又不会关,关了肯定是你在发送完消息自己close掉客户端。
根据楼主描述的问题,应该是这样。
还有一个,while(true)这里最后不要这样写,建议楼主在这里定义一个boolean类型变量代替,通过控制这里的变量来控制此线程,这样便于维护。
下一次请求的时候再创建,没有问题的.
就像大的网站,不可以一次请求与响应结束,socket还一直放在那不管,那资源很快就消耗完了.
2、长连接现在使用非常普遍,链接不释放肯定是会消耗一些资源,但是节省了建立socket链接的时间,可以更快做出响应,提高性能,而且http 1.1 版本默认就是采用长连接