2014-01-29 62 views
0

所以這裏是我一直在處理的問題,我有一個服務器套接字,我需要接收原始數據。這個想法是捕獲原始數據包,以便根據它們的標題數據對它們進行分析和處理。 我一直在做這麼多的調試例程和谷歌搜索和閱讀這麼多文章,但我還沒有找到一種方法來得到這個工作。VB.net中的原始套接字發送和接收

到目前爲止,我主要是陷入Listen()命令。初始化代碼如下:

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 

正如我所說,監聽()命令是在我的計劃之旅,是的,我已經嘗試了正常值,但無濟於事。

任何想法?

目標:接收包含完整標頭(IP,MAC,chksum,SYN/ACK等)的數據包數據。 次要目標:從任何IP接收數據,並指定一個適配器以專門監控(即僅限wifi或有線局域網)

回答

0

嘗試將套接字類型更改爲IP4。以下是我的工作。希望能幫助到你。

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

listenSocket.ReceiveBufferSize = 200

昏暗Lcip作爲的IPAddress = ipaddress.any

昏暗EP作爲新Net.IPEndPoint(Lcip,155)

listenSocket.Bind(EP)

昏暗maxcon作爲的Int32 = 500

「s1.listen(maxcon)

而不是虛假

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

listenSocket.Receive(bytes) 

結束而