如果一个客户端丢失连接,如何将数据从服务器发送到其他活动客户端,该怎么办?

时间:2012-10-10 18:01:25

标签: tcp

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

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

如果所有3个客户都还活着,那么这3个客户总共可以获得3000行。

现在我的问题是1个客户端是否已死(连接丢失),如何让其他两个客户端获得

所有其他数据?

例如,C1接收了200行,我把它关闭了。如何让C2 + C3接收2800线?

1 个答案:

答案 0 :(得分:0)

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

使用select(...)会告诉您何时连接可以接受更多数据,要读取数据或已关闭(准备读取但可用0字节)。

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