搜索结果

57-其它套接字选项

还有很多套接字选项,比如SO_KEEPALIVE,SO_RCVBUF,SO_SNDBUF等,这些就不打算在博客里详细去实验,大家可以自己使用opt程序进行实验。以后如果我们遇到了非得用它的时候,再会详细的去讨论它们,本章我们主要掌握几个常见...

56-套接字选项(TCP_CORK)

Nagle算法尽量减少小分组出现在网络上,而TCP_CORK是完全避免小分组出现在网络上。该选项是在Linux2.2才引入的。cork这个单词,意为“塞子”,我们把TCP发送缓冲区想象成一个水池,而cork的作用就是把这个水池的出口堵住,直...

59-UDP 数据报丢失

1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git.oschina.net/ivan_allen/unp.git如果你已经clone过这个代码了,请使用gitpull更新一下。本节程序所使用的程...

58-基于 UDP 协议的回射服务器

1.UDP协议概述UDP协议比TCP协议要简单的多,它是一种无连接的协议。无连接,意味着各个报文没有顺序性,你可能先发了一个数据包A,后发一个数据包B,结果对方却先收到B,后收到A.UDP协议首部也非常简单,如图1.图1UDP首部UDP协议...

61-面向连接的 UDP

前面我们已经知道,UDP编程中的调用sendto和recvfrom产生的错误是不会返回的。主要原因在于套接字是无连接的。要想让它们返回错误,只有让套接字变成有连接的。1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclone...

63-不可靠的 UDP 协议

本文我们对UDP的可靠性进行测试。1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git.oschina.net/ivan_allen/unp.git如果你已经clone过这个代码了,请使用gitp...

62-UDP 与 connect

在上一篇文章中,非常详细的叙述了有连接和无连接的区别,并严格的定义了什么是有连接。然后讲解了使用connect函数将UDP套接字设置成有连接的。本文我们继续讨论有连接和无连接UDP的区别。1.多次调用connect函数上一讲我们已经知道co...

64-TCP/UDP 混合服务器

本文将为基本的UDP套接字编程这一章画上句号。这一篇文章主要将前面学习过的TCP和这一章的UDP结合起来,做一个既能接收TCP连接,又能接收UDP报文的回射服务器程序。1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclon...

67-套接字超时(select)

设置超时的第二个技术是使用select函数。它使用了select函数的最后一个超时参数,对套接字描述符进行了“预读”。1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git.oschina.net/...

68-套接字超时(SO_RCVTIMEO 与 SO_SNDTIMEO)

设置套接字超时的第三个技术是使用套接字选项SO_RCVTIMEO与SO_SNDTIMEO,它的优势在于一次设置,所有应用于该套接字的操作都自动带有超时时间。它就好像是一个全局开关。比如对于SO_RCVTIMEO来说,如果设置了它,所有对该套...

70-散布读、聚集写

看到这个标题你可能会懵圈,没事,只是名字有点恐怖而已。在英文中,它们被称为scatterread和gatherwrite.1.引例看下面一段代码:charbuf1[10];charbuf2[20];charbuf3[15];write(fd...

73-进程间传递描述符(概述)

从这一篇开始,正式进入UnixDomainProtocols——Unix域协议。不过本文标题似乎与Unix域协议没有什么关系,实际上,它是unix域协议的一个应用。接下来,我们进入主题。1.如何在进程间传递描述符早先在Linux环境编程中学...