2013-04-08 55 views
0

您可以告訴我爲什麼我無法接收數據。
我使用的UDP協議追蹤來自:http://www.bittorrent.org/beps/bep_0015.htmlC#UDP Tracker協議 - 無法接收數據

這裏是我的代碼時,我試圖從UDP信息://tracker.openbittorrent.com:80 /宣佈

 Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 
     client.Connect("tracker.openbittorrent.com", 80); 

     byte[] conPacket = new byte[16]; 
     byte[] temp = BitConverter.GetBytes(0x41727101980); 
     byte[] temp2 = BitConverter.GetBytes(0); 
     byte[] temp3 = BitConverter.GetBytes(new Random().Next(0, 65535)); 
     Array.Copy(temp, 0, conPacket, 0, 8); 
     Array.Copy(temp2, 0, conPacket, 8, 4); 
     Array.Copy(temp3, 0, conPacket, 12, 4); 
     client.Send(conPacket); 

     byte[] recvPacket = new byte[16]; 
     client.Receive(recvPacket); <--------------- Waiting for response 
     client.Close(); 

回答

2

好了,以後幾個小時的研究我終於決定使用Wireshark來查找請求包。

我發現我的數據包沒有正確的順序。 (

這是新代碼

 Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 
     client.Connect(tracker, port); 

     byte[] conPacket = new byte[16]; 
     byte[] temp = BitConverter.GetBytes(0x41727101980).Reverse().ToArray(); 
     byte[] temp2 = BitConverter.GetBytes(0); 
     byte[] temp3 = BitConverter.GetBytes(new Random().Next(0, 65535)); 
     Array.Copy(temp, 0, conPacket, 0, 8); 
     Array.Copy(temp2, 0, conPacket, 8, 4); 
     Array.Copy(temp3, 0, conPacket, 12, 4); 
     //Connect to the protocol 
     client.Send(conPacket); 

     byte[] response = new byte[16]; 
     client.Receive(response); 

它的工作現在