我需要通过以太网协议将以太网数据包从一台设备发送到另一台设备。经过研究后,我决定使用TCP \ IP协议。我创建了相互通信的TCP服务器和TCP客户端。我为此使用了TcpClient和TcpListener类。它工作正常,但我有一些问题:
答案 0 :(得分:0)
Svemir,您可以检查SO question here有关使用C#中的套接字进行原始通信的信息。
Here is a good SuperUser explanation of the various layers。如果您使用Sockets的raw方法,那么您会遇到一些困难
如果以这种方式实现套接字,则必须处理TCP的详细信息。
来自SocketType.Raw上的Microsoft文档
支持访问基础传输协议。使用Raw,您可以使用Internet控制消息协议(ProtocolType.Icmp)和Internet组管理协议(ProtocolType.Igmp)之类的协议进行通信。发送时,您的应用程序必须提供完整的IP标头。收到的数据报返回的是IP标头和完整的选项
来自Microsoft文档SocketType.Stream
支持可靠的,双向的,基于连接的字节流,而无需重复数据,也无需保留边界。这种类型的套接字与单个对等方通信,并且需要远程主机连接才能开始通信。 Stream使用传输控制协议(ProtocolType.Tcp)和AddressFamily.InterNetwork地址族。
从根本上讲,这意味着一切已为您处理,并且您只能访问SuperUser链接所指的字母内容。