将数据从原始套接字发送到udp或tcp套接字

时间:2015-03-15 09:57:31

标签: linux sockets network-programming

我正在尝试学习Linux中的套接字。我有一个小的开发板,像在内部运行Linux的覆盆子Pi。不幸的是,它没有以太网或USB端口。

我创建了一个虚拟网络接口,并将其用作默认网关。我编写了一个小程序,使用原始套接字监听虚拟接口(然后通过串行线路将所有数据包发送到计算机,程序将此数据包发送到互联网并收到答复并将其发回)。

我的问题是当我试图ping一些公共IP地址时,我可以在tcpdump中看到计算机和开发板中的ICMP请求和响应。但ping看起来确实没有收到任何信息。

我已经尝试使用loopback接口而不是虚拟接口,但在这种情况下ping会循环,设备会在一段时间内变得不负责任:)。但ping确实收到了ICMP响应,并且TCP连接无法正常工作。

我也尝试使用2个虚拟接口并创建桥接器。

我会非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

我认为你可以在本地机器上下载和测试一些外部程序,例如从github - https://github.com/hoxnox/rawsock_recv_example 在这个例子中,您将找到构建简单UDP回显服务器的cMake项目和创建两个原始UDP套接字的应用程序。

作为良好的文档参考,您可以使用本文 - http://sock-raw.org/papers/sock_raw