【发布时间】:2010-12-09 14:48:35
【问题描述】:
我想在 C# 中发送一个 TCP 数据包(带有自定义标头)。构建这样的数据包是没有问题的,我有一个字节数组中的数据。但是如何通过套接字发送这个数据包呢?
我尝试过这样的事情:
using (Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP))
{
TcpPacket tcpPacket = new TcpPacket();
// fill tcpPacket with data
sock.Bind(new IPEndPoint(MYADDRESS, MYPORT));
byte[] data = tcpPacket.GetBytes();
sock.SendTo(data, new IPEndPoint(DESTADDRESS, DESTPORT));
}
这运行没有任何异常,但嗅探网络表明没有发送任何内容。解决办法是什么?
我使用的是 Windows 7 Professional,我不希望系统单独创建完整的 TCP 连接。
PS:我不想使用其他库。
PS:构建 IP 数据包也不成问题。
【问题讨论】:
-
"SocketType.Raw: [...] 您的应用程序在发送时必须提供完整的 IP 标头。[...]" 您是否尝试在数据包中包含完整的 IP 标头?
-
错过了。生病尝试完整的 ip 标头,thx
-
试过..再次没有传出数据包:(
-
抱歉格式混乱,我不确定what happened there。
-
@Bobby:哦,不是你的错,np :)