VB.net中的原始套接字发送和接收

时间:2014-01-29 04:45:56

标签: vb.net sockets header packet raw-sockets

所以这是我一直在使用的问题,我有一个服务器套接字,我需要接收原始数据。我们的想法是捕获原始数据包,以便根据其标题数据对其进行分析和处理。 我一直在做这么多的调试程序和谷歌搜索,阅读了很多文章,但我还没有找到办法让这个工作。

到目前为止,我主要陷入了Listen()命令。 Init代码如下:

s1 = New Net.Sockets.Socket(Net.Sockets.AddressFamily.InterNetwork, Net.Sockets.SocketType.Raw, Net.Sockets.ProtocolType.IPv4)
Dim Lcip As New Net.IPAddress({192, 168, 1, 5})
Dim ep As New Net.IPEndPoint(Lcip, 155)
Dim maxcon As Int32 = 500
s1.SetSocketOption(Net.Sockets.SocketOptionLevel.IP, Net.Sockets.SocketOptionName.HeaderIncluded, True)
s1.Bind(ep)
s1.Listen(Int32.MaxValue)
s2 = s1.Accept

正如我所说,Listen()命令是我的程序跳转的地方,是的,我尝试了正常的值,但无济于事。

任何想法?

目标:接收包含完整标头(IP,MAC,chksum,SYN / ACK等)的数据包数据 次要目标:从任何IP接收,并指定一个专门监控的适配器(即只有wifi,或只有有线局域网)

1 个答案:

答案 0 :(得分:0)

尝试将套接字类型更改为IP4。以下是对我有用的东西。希望它有所帮助。

listensocket = New Net.Sockets.Socket(Net.Sockets.AddressFamily.InterNetwork,Net.Sockets.SocketType.Raw, Net.Sockets.ProtocolType.IP4

listenSocket.ReceiveBufferSize = 200

Dim Lcip As IPAddress = ipaddress.any

Dim ep As New Net.IPEndPoint(Lcip,155)

listenSocket.Bind(EP)

Dim maxcon As Int32 = 500

“s1.listen(maxcon)

虽然不是假的

 Dim bytes() As Byte = New Byte(0 To 200) {}

 listenSocket.Receive(bytes)

结束时