有人可以提供连接多个客户端套接字的服务器套接字的示例代码,并按顺序处理它们,每条消息最多只读一条消息吗?
对于阅读部分,看起来在阅读一行之后就会挂起:
while ((fromClient = in.readLine()) != null) {
并且在阅读任何内容之前就会挂起:
fromClient = in.readLine();
答案 0 :(得分:1)
我认为你想要更像this的东西。但是我担心你需要在很大程度上将网络逻辑与程序逻辑分开。
也就是说,您需要使用java.nio
来完成此操作,因为调用readLine()
将阻止读取,直到到达行尾。 (所以如果你想使用readLine()
,你需要每个客户一个线程)
您可能需要扩展示例以保留每个客户端的缓冲区并在该行的末尾监视它。
答案 1 :(得分:1)
只需将while
更改为if
即可。 readLine()
阻塞,直到读取完整的行或对等方已关闭连接。如果那只是试图只读一行的阻塞,那就会引起你的相当奇怪的要求。如果一个客户端很慢,它将减慢整个系统的速度。你确定需要这样做吗?您是否意识到您可以通过线程同时从所有客户端读取数据?
答案 2 :(得分:0)
您是否尝试过oracle示例?
描述: http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html