2013年7月24日

UNIX网络编程——经常使用的套接字选项

摘要: 1.设置/获取套接字选项int setsockopt(int socket, int level, int option_name, const void *option_value, socklen_t option_len);int getsockopt(int socket, int lev... 阅读全文

posted @ 2013-07-24 15:53 胡永光 阅读(181) 评论(0) 推荐(0) 编辑

UNIX网络编程——心跳包

摘要: 所谓的心跳包就是在客户端和服务器端间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。 一般是用来判断对方(设备,进程或其它网元)是否正常动行,一般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉。用于检... 阅读全文

posted @ 2013-07-24 15:44 胡永光 阅读(269) 评论(0) 推荐(0) 编辑

UNIX网络编程——套接字选项(SOL_SOCKET级别)

摘要: #include int setsockopt( int socket, int level, int option_name,const void *option_value, size_t option_len);第一个参数socket是套接字描述符。第二个参数level是被设置的选项的级别,... 阅读全文

posted @ 2013-07-24 15:39 胡永光 阅读(1847) 评论(0) 推荐(0) 编辑

UNIX网络编程——套接字选项(setsockopt)

摘要: setsockopt的一些用法:close socket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseadd... 阅读全文

posted @ 2013-07-24 15:04 胡永光 阅读(215) 评论(0) 推荐(0) 编辑

UNIX网络编程——处理服务器中大量的TIME_WAIT

摘要: 出现条件:服务器主动关闭 短连接服务加剧 根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方 socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),TIME_WAIT状态下的socke... 阅读全文

posted @ 2013-07-24 14:45 胡永光 阅读(148) 评论(0) 推荐(0) 编辑

UNIX网络编程——套接字选项(心跳检测、绑定地址复用)

摘要: /* 设置套接字选项周期性消息检测连通性 心跳包、 心博。主要用于长连接。 * 参数:套接字, 1或0开启, 首次间隔时间, 两次间隔时间, 断开次数 */void setKeepAlive( int iSockfd , int iSockAttrOn, socklen_t iIdleTime ,... 阅读全文

posted @ 2013-07-24 14:02 胡永光 阅读(230) 评论(0) 推荐(0) 编辑

UNIX网络编程——TCP 滑动窗口协议

摘要: 什么是滑动窗口协议? 一图胜千言,看下面的图。简单解释下,发送和接受方都会维护一个数据帧的序列,这个序列被称作窗口。发送方的窗口大小由接受方确定,目的在于控制发送速度,以免接受方的缓存不够大,而导致溢出,同时控制流量也可以避免网络拥塞。下面图中的4,5,6号数据帧已经被发送出去,但是未收到... 阅读全文

posted @ 2013-07-24 13:59 胡永光 阅读(196) 评论(0) 推荐(0) 编辑

UNIX网络编程——套接字选项(SO_REUSEADDR)

摘要: 1、一般来说,一个端口释放后会等待两分钟之后才能再被使用,SO_REUSEADDR是让端口释放后立即就可以被再次使用。 SO_REUSEADDR用于对TCP套接字处于TIME_WAIT状态下的socket,才可以重复绑定使用。server程序总是应该在调用bind()之前设置SO_REUSEAD... 阅读全文

posted @ 2013-07-24 13:55 胡永光 阅读(167) 评论(0) 推荐(0) 编辑

UNIX网络编程——套接字选项(SO_RCVBUF和SO_SNDBUF)

摘要: 有时候我们需要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要学习套接字选项。int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen)int setsockopt(int soc... 阅读全文

posted @ 2013-07-24 12:03 胡永光 阅读(305) 评论(0) 推荐(0) 编辑

UNIX网络编程——使用select函数编写客户端和服务器

摘要: 首先看原先《UNIX网络编程——并发服务器(TCP)》的代码,服务器代码serv.c:#include#include#include#include#include#include#include#include#include#include#define ERR_EXIT(m) \... 阅读全文

posted @ 2013-07-24 10:00 胡永光 阅读(262) 评论(0) 推荐(0) 编辑

UNIX网络编程——shutdown 与 close 函数 的区别

摘要: 假设server和client 已经建立了连接,server调用了close, 发送FIN 段给client(其实不一定会发送FIN段,后面再说),此时server不能再通过socket发送和接收数据,此时client调用read,如果接收到FIN 段会返回0,但client此时还是可以... 阅读全文

posted @ 2013-07-24 00:56 胡永光 阅读(189) 评论(0) 推荐(0) 编辑

导航