技术综合

76-抽象 unix 域套接字地址

1.普通VS抽象前面我们已经学习过了sockaddr_un结构,它有一个成员sun_path,通常它保存的是一个以'\0'为结尾的绝对路径。一旦绑定了一个绝对路径,就会生成一个文件。这种unix域套接字地址我们称为普通unix域套接字地址。...

75-Unix 域字节流回射服务器

很久以前我们早已学过各种各样的进程间通信的方法,比如无名管道,有名管道共享内存等等。而使用unix域协议进行通信,也是一种进程通信的方法。所以以后面试官问你进程间通信手段,不要忘记了这种^_^.知道了unix域的套接字地址以及绑定后,其它的...

72-套接字与标准I/O

之前我们使用read,write及其他们的变体(recv,send)函数读写I/O,这些函数都是围绕着描述符工作的。我们将这一类I/O称为UnixI/O.我们也可以使用标准I/O函数库来读写I/O,它由ANSIC标准进行规范,比如fputs...

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

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

70-散布读、聚集写

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

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

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

67-套接字超时(select)

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

64-TCP/UDP 混合服务器

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

62-UDP 与 connect

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

63-不可靠的 UDP 协议

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

19- TCP 协议(Nagle)

前面我们所用的unp/protocol/tools/winclient/echo_cli.cpp程序的特别之处是它总会发送一个小分组(TCP段,只有41字节)到服务器。这样的小分组在英文中称为tinygram,在网络状态好的情况下,比如局域...

20-TCP 协议(滑动窗口——基础)

相信大家都遇到过这样的场景:同学Luffy给你打电话,让你记下一串手机号码,可是你记忆力不太好,你跟Luffy约定,一次只最多只能报4个数字,Luffy念一遍,如果你听到了就把他说的话重复一遍。接下来:你:你一次最多报4个数字,多了我记不住...