Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 用于演示网络中链路层通信而不使用ip地址的套接字程序_C_Sockets_Networking - Fatal编程技术网

C 用于演示网络中链路层通信而不使用ip地址的套接字程序

C 用于演示网络中链路层通信而不使用ip地址的套接字程序,c,sockets,networking,C,Sockets,Networking,众所周知,在网络中,通信是通过MAC地址而不是ip地址进行的。因此,我一直认为,我们是否可以在服务器-客户机范例中编写一个套接字程序,该程序只使用MAC地址进行通信,而不使用ip地址,即结构sock_____________________________________________可以工作以允许您访问L3标头。但是,请注意,在更新更多的Windows(XP SP3、Vista和7)上,原始套接字受到套接字层的极大限制,因此很难发送您选择的任意数据 您还可以使用允许对以太网适配器进行更原始的

众所周知,在网络中,通信是通过MAC地址而不是ip地址进行的。因此,我一直认为,我们是否可以在服务器-客户机范例中编写一个套接字程序,该程序只使用MAC地址进行通信,而不使用ip地址,即结构sock_____________________________________________可以工作以允许您访问L3标头。但是,请注意,在更新更多的Windows(XP SP3、Vista和7)上,原始套接字受到套接字层的极大限制,因此很难发送您选择的任意数据


您还可以使用允许对以太网适配器进行更原始的访问的特殊库。(对于Windows)或(对于Linux)将允许您操作整个数据包数据,包括以太网报头,并确实发送任何其他您想要的L2协议。

您当然可以编写这样的程序,是的。你有什么问题吗?你能告诉我怎么写这样一个程序吗?因为我已经用C写了很多程序,但是从来没有尝试过这个。你能给我一些提示吗。但是它在代码中填充了ip地址结构;主机地址。sin\u addr.s\u addr=INADDR\u ANY;它不是基于硬件地址。你读得够多了吗?第一个例子是UDP,第二个是原始以太网。哦,非常抱歉,感谢您提供的链接。当我想在Windows中使用
socket()
sendto()发送ARP数据包时,该限制是否适用?是的。由于ARP是介于L1和L2之间的数据包(类似于L1.5),您无法直接控制ARP数据包,也无法从标准的
套接字生成它们。你能回答这个问题吗?看到我的个人资料,你就会发现问题所在。