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

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

问题描述:

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

对于阅读部分,看来这挂起读一个行后:

while ((fromClient = in.readLine()) != null) { 

和阅读任何东西在此之前挂起:

fromClient = in.readLine(); 
+0

使用'readLine()'只有在你知道你正在阅读的信息是纯文本的时候才会起作用,并且会被换行符终止。 –

只要将您的while更改为if即可。 readLine()阻塞,直到完整的一行被读取或对等方已关闭连接。如果这是阻止试图阅读一行,它会调用你奇怪的需求。如果一个客户很慢,它会减慢整个系统。你确定你需要这样做吗?你知道你可以通过线程同时读取所有的客户端吗?

+0

我最终强迫自己多线程,因为它确实是常态。有用。对不起其他人试图满足我的奇怪的要求:无论如何,这是思想的食物。 – Rooster

+0

我认为这个例子是1个服务器,1个客户端。我有1个服务器,多个客户端。他们也有这样的例子,但是有多线程,而我不需要。 – Rooster

我想你想要的东西更像this。但是恐怕你需要将网络逻辑从程序逻辑中分离出来。

也就是说,您需要使用java.nio来实现此目的,因为调用readLine()将在读取时阻塞,直到到达行的末尾。 (所以如果你想使用readLine(),你需要每个客户端有一个线程)

你可能不得不扩展这个例子来为每个客户端保留一个缓冲区并监视它的行尾。