我有一个服务器和3个客户端(TCP连接)使用executorservice。
我正在尝试从服务器S向C1,C2和C3发送数据。总数据为3000行。
如果所有3个客户都还活着,那么这3个客户总共可以获得3000行。
现在我的问题是1个客户端是否已死(连接丢失),如何让其他两个客户端获得
所有其他数据?
例如,C1接收了200行,我把它关闭了。如何让C2 + C3接收2800线?
答案 0 :(得分:0)
所有TCP会话都是独立的,因此您只需将剩余的2800行写入剩余的两个套接字。
使用select(...)
会告诉您何时连接可以接受更多数据,要读取数据或已关闭(准备读取但可用0字节)。
一旦“select”告诉您连接已关闭,只需将其从轮询文件描述符列表中删除,然后继续写入其他人。每个人都需要自己的状态,说明你写入了多少字节,因为它们可能以不同的速率流动。