About timeout in Socket Programming.# Programming - 葵花宝典
k*r
1 楼
我在编一个peer-to-peer 的程序。
Computer A 收到用户输入后就broadcast 个request packet 寻求文件
。有文件的Computer B和 C都返回 response. Computer A选择并发confirm 给B,同
时打开server接受连接。B收到confirm后和A建立连接。
我要给request 和confirm设个timeout。如果request 没及时收到response,重传。否
则取消timeout; 如果A的confirm 没及时收到B的连接,A就给C发confirm让C和A建
立连接,如收到就取消timeout;
Question:
1. 如何设timeout哪?
a.select(). 可我在主程序已经把select()放在loop里接受stdio, request/response/
confirm, 好像没地方再设其他select()给request/confirm用于timeout了。
b. 用alarm(). 可alarm()无法区分是alarm谁,哪个文件的哪个reques
Computer A 收到用户输入
。有文件的Computer B和 C都返回 response. Computer A选择并发confirm 给B,同
时打开server接受连接。B收到confirm后和A建立连接。
我要给request 和confirm设个timeout。如果request 没及时收到response,重传。否
则取消timeout; 如果A的confirm 没及时收到B的连接,A就给C发confirm让C和A建
立连接,如收到就取消timeout;
Question:
1. 如何设timeout哪?
a.select(). 可我在主程序已经把select()放在loop里接受stdio, request/response/
confirm, 好像没地方再设其他select()给request/confirm用于timeout了。
b. 用alarm(). 可alarm()无法区分是alarm谁,哪个文件的哪个reques