【发布时间】:2013-11-17 10:37:27
【问题描述】:
我对 Socket 编程有非常基本的疑问(也与网络有关)。 我有类似 ServerSocket 的东西..
ServerSocket ss = new ServerSocket(1234);
我有一个名为incomingLink 的Socket 来处理传入的请求..
Socket incomingLink = ss.accept();
请注意,有超过 1 个客户端(比如 3 个客户端)具有类似的输出链接套接字。
Socket outgoingLink = new Socket(ServerIp, 1234);
嗯,要求是服务器有一些本地参数(比如说)
String state;
int timeStamp;
当第一个客户端请求到达时应该更新。并且随后的请求被丢弃。这意味着如果首先收到客户端 1 的请求,那么客户端 2 和客户端 3 的请求将被丢弃。
现在我的问题是如果所有三个客户端都同时发送他们的请求,那么我的 ServerSocket 将如何处理这些请求? 我是否需要创建一个套接字数组来独立处理这三个请求?
Socket[] incomingLink = new Socket[3];
incomingLink[0] = ss.accept();
incomingLink[1] = ss.accept();
incomingLink[2] = ss.accept();
否则,如果我使用单个incomingLink 套接字,底层传输协议(TCP/UDP)是否会为我处理这些并发请求,方法是将它们缓冲到缓冲区,并保持正确的顺序,然后在之后提供它们另一个到我的ServerSocket,这样我的单个incomingLink Socket 就能正确处理它们? (假设这三个请求的传播延迟可能存在差异,即使它们同时发送)。
请帮忙。谢谢。
【问题讨论】:
-
您需要为每个请求创建一个线程。示例:stackoverflow.com/questions/5109654/…>