由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - About timeout in Socket Programming.
相关主题
问一个c的问题C++格式输出
VC6.0 补丁??一个关于visual stdio的问题
pollsys 是干嘛的?how to check the value of $(IntDir) in visual stdio
How to set a timer in C?visual stdio 2005 question
请问如何给sigalrm_handler传递参数.csproj file是做什么的?
想知道家在linux下都有什么c++ socket library一个初级问题,查了很久没有结果,请大侠指点迷津
Opaque type in Cstack overflow problem
一个有关visual stdio 2005的问题C++ ofstream binary output slow
相关话题的讨论汇总
话题: timeout话题: confirm话题: computer话题: request
进入Programming版参与讨论
1 (共1页)
k********r
发帖数: 18
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
c****y
发帖数: 24
2
fork()吧,子进程可以用个SIGALRM处理函数来设置个标志;子进程的结束状态可以由
wait/waitpid得到。然后父进程就在loop B/C,子进程成功返回就直接break,否则继
续loop。

我在编一个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/respon

【在 k********r 的大作中提到】
: 我在编一个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/

k********r
发帖数: 18
3
什么叫loop B/C?如果父进程wait/waitpid的话 我的理解就是停在那儿 (suspend)等
子进程执行完是吗?那别的进程都得等着?

【在 c****y 的大作中提到】
: fork()吧,子进程可以用个SIGALRM处理函数来设置个标志;子进程的结束状态可以由
: wait/waitpid得到。然后父进程就在loop B/C,子进程成功返回就直接break,否则继
: 续loop。
:
: 我在编一个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建

m*****e
发帖数: 4193
4

response/
You need a state machine, and the main loop times out and checks it.

【在 k********r 的大作中提到】
: 我在编一个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/

k********r
发帖数: 18
5
Can you explain in details?
Do you mean I should not set timeout of select() in main loop as NULL?
then what timeout should I set it as?

【在 m*****e 的大作中提到】
:
: response/
: You need a state machine, and the main loop times out and checks it.

1 (共1页)
进入Programming版参与讨论
相关主题
C++ ofstream binary output slow请问如何给sigalrm_handler传递参数
想起了前阵子老姜贴的Programmer Personality测试想知道家在linux下都有什么c++ socket library
static function and static variable?Opaque type in C
char *getbuff() 有什么equivalent的写法嘛?一个有关visual stdio 2005的问题
问一个c的问题C++格式输出
VC6.0 补丁??一个关于visual stdio的问题
pollsys 是干嘛的?how to check the value of $(IntDir) in visual stdio
How to set a timer in C?visual stdio 2005 question
相关话题的讨论汇总
话题: timeout话题: confirm话题: computer话题: request