网络编程的一些小细节(不定时补充)

socket在三种情况下返回可读:

1.如果对端TCP发送数据,那么该套接字变为可读,并且read返回一个大于0的值.

2.如果对端TCP发送一个FIN,那么该套接字变为可读,并且read返回0.

3.如果对端TCP发送一个RST,那么该套接字变为可读,并且read返回-1,而errno中含有确切的错误码.


shutdown和close的区别:

1.close把描述符的引用计数减1,仅在该计数变为0时才关闭套接字.使用shutdown可以不管引用计数就激发TCP的正常连接终止序列.

2.close终止读和写两个方向的数据传送,shutdown可以进行更细节的操作.


UDP的connect函数:

UDP调用connect函数可以检查立刻可知的错误(如显然不可到达的目的地).

可以断开原来的连接指定新的IP地址和端口号. 

还能提高性能,UDP每次发送数据报都要经过连接发送断开这三个过程,但是如果每次只对一个目的地发送那么调用connect可以节省连接和断开的时间.


TCP套接字选项:TCP_MAXSEG(获取或设置MSS)、TCP_NODELAY(禁止Nagle算法)。

猜你喜欢

转载自blog.csdn.net/qq_34262582/article/details/80144717