我通过从nfqeueue获取数据包,打开socket到eth卡并发送数据包(我在中间有一些逻辑)来实现桥接。
我是cpp和低级别的新手,所以我可能会问愚蠢的问题。
如果我理解正确,我不应该为每个数据包打开 - 关闭套接字。 我根据这个例子编写了我的代码 - http://austinmarton.wordpress.com/2011/09/14/sending-raw-ethernet-packets-from-a-specific-interface-in-c-on-linux/
我打开这样的插座:
sockfd = socket(AF_PACKET, SOCK_RAW, IPPROTO_RAW))
我的问题是: 1. 套接字活了多长时间? 2.我如何检查插座是否仍然打开? 3.我怎么关闭它?我看到了关机,但我不知道这是否是API? 4.有人可以指导我在生产水平上的一个例子。意味着处理套接字异常...
谢谢
答案 0 :(得分:2)
只要您有要发送或接收的帧,请保持该套接字打开。正常close(2)
关闭套接字。这是另一个原始套接字教程 - http://www.tenouk.com/Module43a.html
shutdown(2)
只对TCP有意义,而不是与此相关。
没有联系,你在这里谈论以太网。
请自己帮个忙,阅读本书 - 由W. Richard Stevens撰写的TCP/IP Illustrated, Volume 1: The Protocols. - 将为您节省大量的困惑。