当前位置: 技术问答>linux和unix
LINUX C 进行TCP网络连接,怎样设置连接超时时间?
来源: 互联网 发布时间:2016-07-28
本文导语: LINUX C 进行TCP网络连接,怎样设置连接超时时间? 比如设置connect的时间,send的时间,recv的时间。超过时间了就报错返回。 | 看看这个 http://blog.csdn.net/ast_224/archive/2008/09/21/2957294.aspx | 你都想...
LINUX C 进行TCP网络连接,怎样设置连接超时时间?
比如设置connect的时间,send的时间,recv的时间。超过时间了就报错返回。
比如设置connect的时间,send的时间,recv的时间。超过时间了就报错返回。
|
看看这个
http://blog.csdn.net/ast_224/archive/2008/09/21/2957294.aspx
http://blog.csdn.net/ast_224/archive/2008/09/21/2957294.aspx
|
你都想到超时了,说明是准备用非阻塞模式咯?配合select模型吧。
先用fcntl来设置socket的非阻塞。
然后用select里的参数设置超时。
http://blog.csdn.net/ast_224/archive/2008/09/21/2957294.aspx
这里是具体的一些例子
|
简单的方法就是用setsockopt直接设置套接字属性,比如:
//设置接收超时
setsockopt(SockRaw,SOL_SOCKET,SO_RCVTIMEO,(char*)&TimeOut,sizeof(TimeOut))
//设置发送超时
setsockopt(SockRaw,SOL_SOCKET,SO_SNDTIMEO,(char*)&TimeOut,sizeof(TimeOut))
|
如果连阻塞,非阻塞,以及常见的一些select模型都不太熟悉的话,就别急,慢慢看。
|
#define PRC_TIME_OUT 600
void time_out()
{
raise(SIGTERM);
}
......
signal(SIGALRM, time_out);
alarm(PRC_TIME_OUT);
.......
void time_out()
{
raise(SIGTERM);
}
......
signal(SIGALRM, time_out);
alarm(PRC_TIME_OUT);
.......