linux和windows下用setsockopt设置SO_SNDTIMEO,SO_RCVTIMEO的参数的一点区别
2011-08-31 16:10
555 查看
linux和windows下用setsockopt设置SO_SNDTIMEO,SO_RCVTIMEO的参数的一点区别
UDP的socket在某些情况:如对方关闭时,本地可能sendto不出去数据,然后recvfrom就会被阻塞,这时就需要设置 这两个参数的值提高程序质量。
linux:
struct timeval timeout={3,0};//3s
int ret=setsockopt(sock_fd,SOL_SOCKET,SO_SNDTIMEO,&timeout,sizeof(timeout));
int ret=setsockopt(sock_fd,SOL_SOCKET,SO_RCVTIMEO,&timeout,sizeof(timeout));
如果ret==0 则为成功,-1为失败,这时可以查看errno来判断失败原因
int recvd=recv(sock_fd,buf,1024,0);
if(recvd==-1&&errno==EAGAIN)
{
printf("timeout\n");
}
windows:
int timeout = 3000; //3s
int ret=setsockopt(sock_fd,SOL_SOCKET,SO_SNDTIMEO,&timeout,sizeof(timeout));
int ret=setsockopt(sock_fd,SOL_SOCKET,SO_RCVTIMEO,&timeout,sizeof(timeout));
而solaris,则不支持。
UDP的socket在某些情况:如对方关闭时,本地可能sendto不出去数据,然后recvfrom就会被阻塞,这时就需要设置 这两个参数的值提高程序质量。
linux:
struct timeval timeout={3,0};//3s
int ret=setsockopt(sock_fd,SOL_SOCKET,SO_SNDTIMEO,&timeout,sizeof(timeout));
int ret=setsockopt(sock_fd,SOL_SOCKET,SO_RCVTIMEO,&timeout,sizeof(timeout));
如果ret==0 则为成功,-1为失败,这时可以查看errno来判断失败原因
int recvd=recv(sock_fd,buf,1024,0);
if(recvd==-1&&errno==EAGAIN)
{
printf("timeout\n");
}
windows:
int timeout = 3000; //3s
int ret=setsockopt(sock_fd,SOL_SOCKET,SO_SNDTIMEO,&timeout,sizeof(timeout));
int ret=setsockopt(sock_fd,SOL_SOCKET,SO_RCVTIMEO,&timeout,sizeof(timeout));
而solaris,则不支持。
相关文章推荐
- linux和windows下用setsockopt设置SO_SNDTIMEO,SO_RCVTIMEO的参数的一点区别
- linux和windows下用setsockopt设置SO_SNDTIMEO,SO_RCVTIMEO的参数的一点区别
- linux和windows下用setsockopt设置send(), recv() 超时的参数的一点区别
- linux和windows下用setsockopt设置send(), recv() 超时的参数的一点区别
- winsock下与linux下setsockopt(SO_SNDTIMEO,SO_RCVTIMEO)的区别
- winsock下与linux下setsockopt(SO_SNDTIMEO,SO_RCVTIMEO)的区别
- maven java设置Linux和windows区别
- linux和windows下socket编程的一点区别
- Linux环境下使用MySql与在Windows下的一点区别
- tomcat 设置启动参数(linux 和 windows)
- linux,windows keepalive参数的查看与设置
- SO_REUSEADDR在Linux和Windows的区别SO_LINGER的作用
- Linux和windows下socket编程的一点区别
- Linux与windows下setsockopt的一点差异
- socket设置超时的linux和windows区别
- linux 下视频设备设置的几个参数 v4l video4linux v4l2 ioctl
- linux quota命令参数及用法详解---linux磁盘配额限制设置和查看命令
- setsockopt中参数之SO_REUSEADDR的意义
- Linux chkconfig 命令参数及用法详解 | linux系统服务设置命令
- 关于Linux与Windows的区别的文章