通过《Linux网络编程——原始套接字编程》得知,我们可以通过原始套接字以及recvfrom( ) 可以获取链路层的数据包,那我们接收的链路层数据包到底长什么样的呢?链路层封包格式MAC 头部(有线局域网)注意:CRC、PAD 在组包时可以忽略链路层数据包的其中一种情况:1 unsigned cha...
分类:
系统相关 时间:
2015-04-01 15:08:18
阅读次数:
208
原始套接字编程和之前的 UDP 编程差不多,无非就是创建一个套接字后,通过这个套接字接收数据或者发送数据。区别在于,原始套接字可以自行组装数据包(伪装本地 IP,本地 MAC),可以接收本机网卡上所有的数据帧(数据包)。另外,必须在管理员权限下才能使用原始套接字。原始套接字的创建:int soc.....
分类:
系统相关 时间:
2015-04-01 13:05:00
阅读次数:
238
通常情况下程序员接所接触到的套接字(Socket)为两类: (1)流式套接字(SOCK_STREAM):一种面向连接的 Socket,针对于面向连接的TCP 服务应用; (2)数据报式套接字(SOCK_DGRAM):一种无连接的 Socket,对应于无连接的 UDP 服务应用。 从用户的角...
分类:
系统相关 时间:
2015-04-01 11:01:21
阅读次数:
187
通过《Linux网络编程——原始套接字编程》得知,我们可以通过原始套接字以及 recvfrom( ) 可以获取链路层的数据包,那我们接收的链路层数据包到底长什么样的呢?
MAC 头部...
分类:
系统相关 时间:
2015-03-30 21:13:46
阅读次数:
279
在linux网络编程中,使用listen函数监听套接字,在linux中man其用法,第2个参数解释如下: The backlog argument defines the maximum length to which the queue of pending connections for sockfd may grow. ?...
分类:
其他好文 时间:
2015-03-29 09:32:29
阅读次数:
229
本文主要是为熟悉Linux下网络编程,实现一个简单的网络聊天室程序。 以Poll实现I/O复用技术来同时处理网络连接和用户输入,实现多个用户同时在线群聊。
其中客户端实现两个功能:一:从标准输入读入用户数据,并将用户数据发送到服务器;二:接收服务器发送的数据,并在标准输出打印。
服务端功能为:接收客户端数据,并将客户数据发送到登录到该服务端的所有客户端(除数据发送的客户端外)。...
分类:
其他好文 时间:
2015-03-20 22:08:22
阅读次数:
186
单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信。单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网上的主机进行通信。实际情况下,经常需要对一组特定的主机进行通信,而不是整个局域网上的所有主机,这就是多播的用途。
IP 多播(也称多址广播或组播)技术,是一种允许一台或多台主机(多播源)发送单一数据包到多台主机(一次的,同时的)的 TCP/IP 网络技术。
多播地址就类似于 QQ 群号,多播组相当于 QQ 群,一个个的主机就相当于群里面的成员。
多播作为一点对多...
分类:
系统相关 时间:
2015-03-20 22:06:57
阅读次数:
272
网络编程中最基本的概念就是面向连接(connection-oriented)和无连接(connectionless)协议。尽管本质上来说,两者之间的区别并不难理解,但对那些刚刚开始进行网络编程的人来说,却是个很容易混淆的问题。这个问题与上下文有些关联:很显然,如果两台计算机要进行通信,就必须以某种形式“连接”起来,那“无连接通信”又是什么意思呢?
答案是:面向连接和无连接指的都是协议。也...
分类:
系统相关 时间:
2015-03-19 16:24:43
阅读次数:
176