좋아, C#을 사용하여 UDP 트래커에 연결하려고합니다.하지만 응답을 얻지는 못합니다. 나는 또한 오류가 발생하지 않습니다. 여기 내 코드가있다. UDP 트래커가 응답하지 않습니다.
namespace UDPTester
{
class MainClass
{
public static bool messageReceived = false;
public static Random Random = new Random();
public static void LOG(string format, params object[] args)
{
Console.WriteLine (format,args);
}
public static void Main (string[] args)
{
LOG ("Creating Packet...");
byte[] packet;
using(var stream = new MemoryStream())
{
var bc = new MiscUtil.Conversion.BigEndianBitConverter();
using(var br = new MiscUtil.IO.EndianBinaryWriter(bc,stream))
{
LOG ("Magic Num: {0}",(Int64)0x41727101980);
br.Write (0x41727101980);
br.Write((Int32)0);
br.Write ((Int32)Random.Next());
packet = stream.ToArray();
LOG ("Packet Size: {0}",packet.Length);
}
}
LOG ("Connecting to tracker...");
var client = new System.Net.Sockets.UdpClient("tracker.openbittorrent.com",80);
UdpState s = new UdpState();
s.e = client.Client.RemoteEndPoint;
s.u = client;
StartReceiving(s);
LOG ("Sending Packet...");
client.Send(packet,packet.Length);
while(!messageReceived)
{
Thread.Sleep(1000);
}
LOG ("Ended");
}
public static void StartReceiving(UdpState state)
{
state.u.BeginReceive(ReceiveCallback,state);
}
public static void ReceiveCallback(IAsyncResult ar)
{
UdpClient u = (UdpClient)((UdpState)(ar.AsyncState)).u;
IPEndPoint e = (IPEndPoint)((UdpState)(ar.AsyncState)).e;
Byte[] receiveBytes = u.EndReceive(ar, ref e);
string receiveString = Encoding.ASCII.GetString(receiveBytes);
LOG("Received: {0}", receiveString);
messageReceived = true;
StartReceiving((UdpState)ar.AsyncState);
}
}
public class UdpState
{
public UdpClient u;
public EndPoint e;
}
}
나는 정상적인 BinaryWriter를 사용했다, 그러나 그것은 작동하지 않았고, 나는 그것이 bigEndian의에서 그것의 데이터를 원하는 어떤 곳을 읽었다.
이것은 내가 발견 한 UDP 추적기에서 작동하지 않습니다. 왜 내가 응답을 얻지 못하는지 알 수 있습니까? 그들은 프로토콜을 변경하고 아무에게도 말하지 않았을까요? HTTP 추적기는 모두 정상적으로 작동합니다. //tracker.publicbt.com : 80
UDP : //tracker.ccc.de : 80
UDP : //tracker.istole 내가
UDP를 시도했습니다
추적자 .80 :
또한 MonoTorrent를 사용하는 데 관심이 없습니다. (UDP를 사용하는 중에도 UDP가 작동하지 않았습니다.) 패킷이 손실되거나 대상에서 삭제 된 경우 오류가 표시되지 않도록
프로토콜 소스
http://xbtt.sourceforge.net/udp_tracker_protocol.html
http://www.rasterbar.com/products/libtorrent/udp_tracker_protocol.html
그래서 probubly 방화벽 일은 ... 나는 리눅스와 윈도우가 1024 이하의 포트에서 특별한 허가없이 (리눅스를 사용하여) 듣고있어, 모든 사람들이 호스트하는 바보 같은 짓을한다는 것을 안다. 그 추적기는 80 ... 내 생각에. –