0

我有一台服务器和 3 个使用 executorservice 的客户端(TCP 连接)。

我正在尝试将数据从服务器 S 发送到 C1、C2 和 C3。总数据为 3000 行。

如果所有 3 个客户端都处于活动状态,那么这 3 个客户端总共可以获得 3000 行。

现在我的问题是如果 1 个客户端死了(失去连接),如何让其他两个客户端得到

剩下的所有数据?

比如C1收到了200行,我把它关掉了。如何让C2+C3接收2800行?

4

1 回答 1

0

所有 TCP 会话都是独立的,因此您只需将剩余的 2800 行写入剩余的两个套接字。

Usingselect(...)将告诉您连接何时可以接受更多数据、有数据要读取或已关闭(准备好读取但有 0 个字节可用)。

一旦“选择”告诉您连接已关闭,只需将其从轮询文件描述符列表中删除并继续写入其他文件。每个都需要自己的状态来了解您写入了多少字节,因为它们可能以不同的速率流动。

于 2012-10-11T02:40:54.740 回答