Java 服务器套接字,多客户端,每行1个

Java 服务器套接字,多客户端,每行1个,java,networking,Java,Networking,请给出一个服务器套接字的示例代码,它连接多个客户端套接字并按顺序处理它们,每个套接字最多读取一条消息 对于阅读部分,在阅读了一行之后,它似乎挂起了: while ((fromClient = in.readLine()) != null) { 在阅读任何东西之前,这都是悬而未决的: fromClient = in.readLine(); 您是否尝试过oracle示例 服务器: 客户: 说明: 我想你想要更像这样的东西。但我担心您需要在更大程度上将网络逻辑与程序逻辑分开 也就是说,您需要使

请给出一个服务器套接字的示例代码,它连接多个客户端套接字并按顺序处理它们,每个套接字最多读取一条消息

对于阅读部分,在阅读了一行之后,它似乎挂起了:

while ((fromClient = in.readLine()) != null) {
在阅读任何东西之前,这都是悬而未决的:

fromClient = in.readLine();

您是否尝试过oracle示例

服务器:

客户:

说明:
我想你想要更像这样的东西。但我担心您需要在更大程度上将网络逻辑与程序逻辑分开

也就是说,您需要使用
java.nio
来实现这一点,因为调用
readLine()
将阻塞读取,直到到达行尾。(因此,如果要使用
readLine()
,则每个客户端需要一个线程)


您可能需要扩展示例,以便为每个客户端保留一个缓冲区,并在行尾对其进行监视。

只需将
while
更改为
if
readLine()
阻塞,直到读取完整的行或对等方关闭连接。如果你只想读一行,这会让你的奇怪需求受到质疑。如果一个客户端速度较慢,则会使整个系统变慢。你确定你需要这样做吗?您是否意识到可以通过线程同时读取所有客户机?

我相信示例是1台服务器,1台客户机。我有一个服务器,多个客户端。他们也有这样一个例子,但是有多线程,而我的没有必要。只有当你知道你正在阅读的消息是纯文本的,并且会被换行符终止时,使用
readLine()
才有效。我最后强迫自己使用多线程,因为这是正常的。它起作用了。很抱歉,其他人试图满足我奇怪的要求:无论如何,谢谢,这是值得深思的。