61-面向连接的 UDP
前面我们已经知道,UDP编程中的调用sendto和recvfrom产生的错误是不会返回的。主要原因在于套接字是无连接的。要想让它们返回错误,只有让套接字变成有连接的。1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclone...
前面我们已经知道,UDP编程中的调用sendto和recvfrom产生的错误是不会返回的。主要原因在于套接字是无连接的。要想让它们返回错误,只有让套接字变成有连接的。1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclone...
本文我们对UDP的可靠性进行测试。1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git.oschina.net/ivan_allen/unp.git如果你已经clone过这个代码了,请使用gitp...
在上一篇文章中,非常详细的叙述了有连接和无连接的区别,并严格的定义了什么是有连接。然后讲解了使用connect函数将UDP套接字设置成有连接的。本文我们继续讨论有连接和无连接UDP的区别。1.多次调用connect函数上一讲我们已经知道co...
本文将为基本的UDP套接字编程这一章画上句号。这一篇文章主要将前面学习过的TCP和这一章的UDP结合起来,做一个既能接收TCP连接,又能接收UDP报文的回射服务器程序。1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclon...
设置超时的第二个技术是使用select函数。它使用了select函数的最后一个超时参数,对套接字描述符进行了“预读”。1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git.oschina.net/...
设置套接字超时的第三个技术是使用套接字选项SO_RCVTIMEO与SO_SNDTIMEO,它的优势在于一次设置,所有应用于该套接字的操作都自动带有超时时间。它就好像是一个全局开关。比如对于SO_RCVTIMEO来说,如果设置了它,所有对该套...
看到这个标题你可能会懵圈,没事,只是名字有点恐怖而已。在英文中,它们被称为scatterread和gatherwrite.1.引例看下面一段代码:charbuf1[10];charbuf2[20];charbuf3[15];write(fd...
从这一篇开始,正式进入UnixDomainProtocols——Unix域协议。不过本文标题似乎与Unix域协议没有什么关系,实际上,它是unix域协议的一个应用。接下来,我们进入主题。1.如何在进程间传递描述符早先在Linux环境编程中学...
之前我们使用read,write及其他们的变体(recv,send)函数读写I/O,这些函数都是围绕着描述符工作的。我们将这一类I/O称为UnixI/O.我们也可以使用标准I/O函数库来读写I/O,它由ANSIC标准进行规范,比如fputs...
很久以前我们早已学过各种各样的进程间通信的方法,比如无名管道,有名管道共享内存等等。而使用unix域协议进行通信,也是一种进程通信的方法。所以以后面试官问你进程间通信手段,不要忘记了这种^_^.知道了unix域的套接字地址以及绑定后,其它的...
1.普通VS抽象前面我们已经学习过了sockaddr_un结构,它有一个成员sun_path,通常它保存的是一个以'\0'为结尾的绝对路径。一旦绑定了一个绝对路径,就会生成一个文件。这种unix域套接字地址我们称为普通unix域套接字地址。...
Unix域协议这一章的第一篇文章就是讨论如何在进程间传递描述符,可是后面似乎我们把这件事忘了。其实不然,我们一直在为这件事做铺垫,本文将进一步逼近“真相”。辅助数据(Ancillary),也叫控制数据,实际上在前面讲解recvmsg和sen...