易截截图软件、单文件、免安装、纯绿色、仅160KB

【转】linux socket()调用与arp报文发送

 Linux提供最常用的网络通信应用程序开发接口--Berkerley套接字(Socket).它既适用于同一主机上进程间通信(IPC),又适用于不同主机上的进程间通信。套接字的设置通过socket调用完成:
int socket(int family,int type,int protocol);
其中family指通信域或协议族,Linux系统支持的网络协议族有PF_UNIX,PF_IPX,PF_PACKET等几十种;type为套接字类型,目前有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET等;protocol是套接字所用的特定协议类型号.
Linux系统提供的基于数据链路层开发应用程序的接口集成在套接字中,它是通过创建packet类型的套接宇.使应用程序可直接在数据链路层接收或发送未被系统处理的原始的数据报文(如ARP报文),用户也可以使用packet类型的套接宇在物理层上定义自己特殊的网络协议。只有注册号为0的用户(超级用户)进程才能建立或打开用于访问网络低层的套接字.在Linux系统中,用以下三种方式创建的packet套接字可直接用于访问数据链路层:
(1)PF_INET协议族中SOCK_PACKEI类型的套接字
(2)PF_PACKET协议族中SOCK_RAW类型的套接字
(3)PF_PACKET协议族中SOCK_DGRAM类型的套接字
Linux 2.0中对数据链路层的操作主要使用SOCK_PACKET定义的packet套接字.初始化定义如下:
sockfd=socket(AF_INET,SOCK_PACKET,protocol);
其中,protocol用于决定套接字所使用的物理层协议(在IEEE802.3中定义).笔者在此选择常用的物理层协议ETH_P_IP(Internet协议).SOCK_PACKET使用一种比较老的sockaddr_pkt数据结构来设置网络接口。
在Linux 2 2中使用PF_PACKET代替SOCK_PACKET来定义packet套接字.这种套接字的初始化定义如下:
sockfd=socket(PF_PACKET,socket_type,protocol);
其中socket_type只能为SOCK_RAW或SOCK_DGRAM,protocol为物理层通信协议(同上)。SOCK_RAW和SOCK_DGRAM类型套接字使用一种与设备无关的标准物理层地址结构sockaddr_ll,但具体操作的报文格式不同。SOCK_RAW套接字直接向网络硬件驱动程序发送(或从网络硬件驱动程序接收)没有任何处理的完整数据报文(包括物理帧的帧头),这就要求程序员必须了解对应设备的物理帧帧头结构,才能正确地装载和分析报文。SOCK_DGRAM套接字收到的数据报文的物理帧帧头会被系统自动去掉,同样,在发送时.系统将会根据sockaddr_ll结构中的目的地址信息为数据报文舔加一个台适的物理帧帧头。
默认情况下.从任何接口收到的符合指定协议的所有数据报文都会被传送到packet套


相关文档:

实战Linux Bluetooth编程(六) L2CAP编程实例

例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
 如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......

实战Linux Bluetooth编程 (七) SDP协议

Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。 ......

Linux下的Makefile笔记

 来源linux-2.6.20.21/Documentation/kbuild/makefiles.txt
*  obj-y
+= foo.o 表示编build-in,obj-m += foo.o表示编成module.
* kbuild
会编译所有的$(obj-y)文件,然后调用$(LD) -r把这些文件合并到一个built-in.o文件中。这个built-in.o稍后会被父级Makefile link到vmlinux
* 用lib-y
:= checksum.o ......

linux内核(2.6)中的双循环链表浅析

       Linux 2.6内核链表数据结构的实现
在计算机科学中,链表是非常通用的数据结构,贯穿于整个linux的内核。在linux内核中,链表通常以
双循环链表的方式出现。所有链表的代码在include/linux/list.h文件中。
定义如下:
struct list_head {
struct list_head *next, *prev;
}; ......

linux下file descriptoer限制


linux下file descriptoer限制
默认分类   2009-11-21 14:47   阅读0   评论0  
字号: 大大  中中  小小
Tuning file descriptor limits on Linux
Linux limits the number of file descriptors that any one process may open; the default limits are 1024 p ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号