2013-04-08 3 views
0

왜 데이터를 수신 할 수 없는지 말해 줄 수 있습니까? //tracker.openbittorrent.com : 80/C# UDP 트래커 프로토콜 - 데이터를 수신 할 수 없습니다.

 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

좋아요 발표 후, 나는 UDP에서 정보를 얻으려고 할 때 여기 내 코드입니다 http://www.bittorrent.org/beps/bep_0015.html

:
나는에서 UDP 트래커 프로토콜을 사용 몇 시간의 연구 끝에 마침내 요청 패킷을 찾기 위해 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); 

.!