3

我通过从 nfqeueue 获取数据包来实现桥接,打开到 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.有人可以指导我举一个生产级别的例子吗?意味着处理套接字异常...

谢谢

4

1 回答 1

2

只要您有要发送或接收的帧,就保持该套接字打开。用 normal 关闭套接字close(2)。这是另一个给你的原始套接字教程 - http://www.tenouk.com/Module43a.html

shutdown(2)仅对 TCP 有意义,与此处无关。

编辑0:

没有连接,你在这里说的是以太网。

帮自己一个忙,阅读这本书 - TCP/IP 图解,第 1 卷:协议。由 W. Richard Stevens 撰写 - 将为您节省大量的困惑。

于 2012-07-18T18:16:15.737 回答