2011-06-26 46 views
0

我讀過一些在互聯網上,我想知道如何通過TCP在C#發送數據包。這是我迄今所做的:如何在C#中發送數據包?

 TcpClient client = new TcpClient("myipaddresssecret", 7172); 
     Byte[] data = "140049081141799b622d422fcd918d9fb1c55bc3f422"; 
     NetworkStream stream = client.GetStream(); 
     stream.Write(data, 0, data.Length); 
     client.Close(); 

(得到了Wireshark的數據)

所以現在的問題是:如何在C#中通過互聯網發送TCP數據包,或者什麼是錯我的代碼?

+1

你的問題是什麼? –

+0

我說我想知道如何通過TCP在C#中發送數據包? – Marcus

+0

你認爲這不起作用的理由是什麼?你期待的結果是什麼?它與實際發生的事情相比如何? –

回答

4

對於在Windows上發送自己製作的TCP數據包,您將需要一個像WinPcap這樣的驅動程序。如果您使用WinPcap,則可以使用許多.Net包裝器中的一種或編寫自己的代碼。僅使用Windows API提供的對象(如套接字)發送原始幀將不起作用。

只要看看這裏:http://msdn.microsoft.com/en-us/library/ms740548(VS.85).aspx

,唯一的選擇是創建自己的網絡監控司機,還是買WinPcap的商業版本,它不需要安裝,但可以無縫集成到您的程序。

在Windows 7中,Windows Vista中,Windows XP的Service Pack 2(SP2)和 的Windows XP的Service Pack 3(SP3), 發送流量超過原 插座的能力已受到限制幾個 方式:

TCP數據不能通過原始套接字發送。

對於情況下,你改變了主意,也許你可以找到你在這個庫需要的東西:http://www.eex-dev.net/fileadmin/user_upload/apidoc/NetworkLibrary/index.html

它包括WinPcap的包裝和大量的方法和對象手藝和分析數據包。它可能會有用。

+0

好的如何安裝它,你知道我的數據爲什麼太長嗎?我從wireshark複製它。 – Marcus

+0

你確定他甚至想製作包頭和什麼?我覺得這個人只是想通過標準的TCP發送普通的正常數據。 –