
Socket
玄冬Wong
别把自己当回事儿,我还是一只菜鸟……
展开
-
非阻塞socket的连接
http://doc.chinaunix.net/linux/201002/389886.shtml 方案1: int connect_socket_timeout(int sockfd,char *dest_host, int port, int timeout) { struct sockaddr_in address; struct in_addr inaddr; ...原创 2013-04-01 09:20:31 · 118 阅读 · 0 评论 -
[linux] 将socket设置为非阻塞(non-blocking)
原文:http://blog.youkuaiyun.com/wwwsq/article/details/970198有一个非常有迷惑性的做法是:u_long has = 1;ioctl(m_sock, FIONBIO , &has);这个函数会非常无耻的返回你success,但是它实际上很可能什么也没做。正确的做法应该是使用fcntl:int flags = fcntl(m_sock, F_GE...原创 2013-09-09 13:15:10 · 220 阅读 · 0 评论 -
备忘:关掉程序或者终止调试时,进程仍然存在不结束的问题
之前项目有个bug,就是当关掉退出程序按钮或者在调试状态下终止调试后,进程仍然存在。这个问题一直没查找到原因,今天写修改压力测试程序时发现的原因:程序的socket使用的是阻塞模式,recv接收线程在阻塞模式下无法正常退出,即使在其他线程中调用关闭线程操作,也无法执行改变这个recv线程的阻塞状态,除非禁用网卡。解决办法两种:一种是改成非阻塞模式;一种时向服务端发请求,让服务端主动回应一个...原创 2013-09-09 01:35:07 · 928 阅读 · 0 评论 -
提高 Linux 上 socket 性能
原文:http://www.ibm.com/developerworks/cn/linux/l-hisock.html 简介: 使用 Sockets API,我们可以开发客户机和服务器应用程序,它们可以在本地网络上进行通信,也可以通过 Internet 在全球范围内进行通信。与其他 API 一样,您可以通过一些方法使用 Sockets API,从而提高 Socket 的性能,或者限制 ...原创 2013-08-05 00:22:13 · 97 阅读 · 0 评论 -
[Linux]socket阻塞模式下recv()返回11(EAGAIN )的原因
linux socket 阻塞模式下recv()返回11(EAGAIN )的可能原因: 1,设置了接收超时为非0。参考至:http://stackoverflow.com/questions/735249/blocking-socket-returns-eagain 2,网络质量差,例如:wifi环境下的网络信号强度太弱...原创 2013-07-21 20:45:22 · 6104 阅读 · 0 评论 -
IO模式设置网络编程常见问题总结—IO模式设置,阻塞与非阻塞的比较,recv参数对性能的影响...
原文:http://blog.youkuaiyun.com/houlaizhe221/article/details/6580775 非阻塞IO 和阻塞IO: 在网络编程中对于一个网络句柄会遇到阻塞IO 和非阻塞IO 的概念, 这里对于这两种socket 先做一下说明: 基本概念: 阻塞IO:: s...原创 2013-07-21 19:42:45 · 108 阅读 · 0 评论 -
Linux网络编程socket错误分析
Linux网络编程socket错误分析 socket错误码: EINTR: 4阻塞的操作被取消阻塞的调用打断。如设置了发送接收超时,就会遇到这种错误。只能针对阻塞模式的socket。读,写阻塞的socket时,-1返回,错误号为INTR。另外,如果出现EINTR即errno为4,错误描述Interrupted system call,操作也应该继续。如果recv的返回值为...原创 2013-07-21 18:46:36 · 236 阅读 · 0 评论 -
用setsockopt()来控制recv()与send()的超时
原文:http://www.cppblog.com/jerryma/archive/2010/03/31/111169.html在send(),recv()过程中有时由于网络状况等原因,收发不能预期进行,而设置收发超时控制:在Linux下需要注意的是时间的控制结构是struct timeval而并不是某一整型数,以下是来自于网上一篇文章中的摘录,它是这样写的:int nNetTime...原创 2013-07-21 18:45:31 · 208 阅读 · 0 评论 -
关于socket阻塞与非阻塞情况下的recv、send、read、write返回值
原文:http://hi.baidu.com/tim_bi/item/1663bb8ef553fc57e63d199e1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有 区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 <0:出错,=0:连接关闭,>0接收到数据大小,特别:返回 值 <0时并且(errno == EINTR || errno == ...原创 2013-04-02 16:25:09 · 948 阅读 · 0 评论 -
Linux下getsockopt/setsockopt 函数说明
http://blog.youkuaiyun.com/lu_ming/article/details/4675594Linux下getsockopt/setsockopt 函数说明【getsockopt/setsockopt系统调用】 功能描述: 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的...原创 2013-04-01 23:22:01 · 103 阅读 · 0 评论 -
socket异步通信-如何设置成非阻塞模式、非阻塞模式下判断connect成功(失败)、判断recv/recvfrom成功(失败)、判断send/sendto...
原文:将一个socket 设置成阻塞模式和非阻塞模式,使用fcntl方法,即:设置成非阻塞模式:先用fcntl的F_GETFL获取flags,用F_SETFL设置flags|O_NONBLOCK; 即: flags = fcntl(sockfd, F_GETFL, 0); //获取文件的flags...原创 2013-09-09 14:26:37 · 1642 阅读 · 0 评论