发布时间:2013-06-02 00:02:12
前言: Bind(): Address already in use引出来的问题:前一篇文章《linux socket 编程示例》在用CTRL+C结束进程后,再启动时会出现:Bind(): Address already in use的错误提示,并导致程序直接退出; 用$netstat -an |grep 8080或$ps aux |grep 8080都还能看到刚才用Ctrl+C“强制结束”了的进程,端口还是使用中,只能用kill结束进程,才能收回端口,很是麻烦。在代码中添加:int optval;optval = 1;ret = setsockopt( sock, SOL......【阅读全文】
发布时间:2013-05-11 01:52:22
方法一(使用alarm定时): connect 设置超时 内核connect超时通常为75秒,我们可以设置更小的时间如10秒来提前从connect中返回 这里用使用信号处理机制,调用alarm,超时后产生SIGALRM信号 (也可使用select实现) Sigfunc * sigfunc ; sigfunc=signal(SIGALRM, connect_alarm); //.........【阅读全文】
发布时间:2013-05-11 01:31:05
目前各平台通用的设置套接字(Socket)连接超时的办法是:创建套接字,将其设置成非阻塞状态。调用connect连接对端主机,如果失败,判断当时的errno是否为EINPROGRESS,也就是说是不是连接正在进行中,如果是,转到步骤3,如果不是,返回错误。用select在指定的超时时间内监听套接字的写就绪事件,如果.........【阅读全文】
发布时间:2013-05-05 13:39:02
原文地址:同一个socket是否可以bind多个端口? 作者:瀚海书香版权所有,转载请注明出处。Author: Tony <tingw.liu#gmail.com>今天一个可爱的同事问我同一个socket能否bind多个port?说实话,真没这么玩过。本着严谨的态度,决定研究一下这样是否可以。说明本内容针对的内核版本是SLES 11 SP2 3.0.13-0.27首先分.........【阅读全文】
发布时间:2013-05-05 13:38:16
TCP/IP 协议栈中定义了MSS, 为的是提高网络的性能,因为如果让IP层分包的话,丢包后的重发没法控制,需要重传整个TCP包(浪费了网络资源) MSS就是这个协商的结果,不能人为修改,这个MSS的大小是MTU减去TCP头,从TCPDUMP结果中我们可以看到我们的TCP协商的MSS都在1.3~1.4K 所以一定需要我们自己来重.........【阅读全文】