搜索结果

104-信号引起的竞争错误

1.引言之前我们学习过使用alarm信号这种奇技淫巧来实现带超时的IO函数,一直以来,我们写的这种程序都带有一个隐含的bug.举例来说,我们可能经常会写下面这样的代码:alarm(2);for(;;){addrlen=sizeof(clia...

105-多播(基础)

1.引言多播(或叫组播,Multicast)的出现,正是为了解决广播的不足。我们已经学会用udp发广播数据包,然而,对于不想接收广播数据包的主机来说,这就是一种骚扰。比如某主机接收到以太网帧(目的MAC地址为ff:ff:ff:ff:ff:f...

106-多播地址

1.多播地址多播地址,类似“QQ群号”,它是D类IP地址(224.0.0.0~239.255.255.255)。D类IP地址的首4位总是2进制1110开头,因此,可用的范围就只剩下后28位。这28位称为groupid——多播组ID,完整的3...

109-获取接口信息(一)

1.接口的其他信息上一篇文章简要的介绍了接口的名字和索引号的概念,我们也可以通过一些函数去获取、转换它们。可是,接口除了这些信息外,还有很多其它信息,比如接口上配置的ip地址啊,子网掩码啦,MTU等等。说了这么多,那要怎么才能获取到这些信息...

108-网络接口

1.接口网卡,是让计算机通向外部世界的一扇大门。但是在计算机的世界里,一般这扇门称为“接口(Interface)”。接口是物理意义上的设备。在Linux/Unix中,我们使用ifconfig命令来查看接口信息:图1接口信息接口通常都有自己的...

111-UDP 数据报被截断

1.数据报被截断有时候我们有这样的需求,在udp数据报传输的过程中,如果对方发过来的数据报很大,而我们的接收缓冲区不足以容纳这么大的数据报,怎么办?此时udp数据报就会被截断,有没有一种办法能判断数据报是否被截断呢?先来看看UDP数据报被截...

110-获取接口信息(二)

1.获取接口其它信息前面我们已经了解了ioctl的使用方法,现在我们希望获取更多的接口信息,最后将其封装成一个独立函数,名为getIfiInfo.我们先来看看这个函数的演示示例,后面再给出详细过程。getIfiInfo获取所有接口的配置信息...

112-封装 recvFromFlags

在上一篇博文中,我们使用了recvmsg函数来获取标志位,但是每次填充structmsg结构体都相当费事,因此我们希望将这个过程封装成一个函数recvFromFlags,一劳永逸。除了获取标志位之外,我们还希望得到数据包是从哪个接口进来的,...

0-Linux 网络编程学习笔记导航

学习交流群:Linux学习交流群610441700说明:本系列文章并不能取代《UNP》这本旷世之作,文章中难免有错误与不足之处,希望读者们遇到有疑问的地方可以加群互相交流,共同进步。写这一系列文章的目的有三个:一是为了提升自己对linux的...

LNMP 2018/03/31 4149

《那些年啊,那些事——一个程序员的奋斗史》——01

段伏枥,一个瘦小,矮小,根本和“帅”这个字粘不上任何关系的普通人。名字的来源在于其多读了几年书的老爹,总抱着有一天要出书出名乃至于名流千古的美好理想,但可惜现实总是给予他无情的而又现实的打击,于是就将理想寄望于自己的...

《那些年啊,那些事——一个程序员的奋斗史》——02

银湖汽车站,段伏枥可能一生都不会忘记的汽车站,因为是他踏上深圳土地的第一站;301同样也是不会忘记,因为他第一次知道了原来公交也可以开得比飞机还快,这也是他第一次体会到什么是深圳速度。目的地是白石洲,一个离腾讯所在的科技园不到两个站的贫民窟...

《那些年啊,那些事——一个程序员的奋斗史》——03

一个空荡荡的房子,对面坐着两个美女,然后旁边传来的是相较AV也不落下风的呻吟声,会是一个什么样的感觉?段伏枥此刻忍受的正是这样的煎熬。吃过饭,逛了一下白石洲的超市,买了点必备的生活用品,因为无处可去,所以便回到的出租屋。只不过屋子空荡荡的,...