我正在尝试在objective-c中创建一个torrent scraper,我使用CocoaAsyncSocket通过UDP发送数据包。在BitTorrent UDP Tracker Protocol之后。我已经使用Wireshark验证数据包已发送,但跟踪器不会发回任何内容。我假设我将所发送的数据放在一起做错了,因为我对数据操作的经验很少。现在我只是试图成功完成protocol的连接请求。下面是代码通过UDP发送数据包到Objective-C的洪流跟踪器与CocoaAsyncSocket
-(void)connect {
NSString *host = @"tracker.publicbt.com";
GCDAsyncUdpSocket *socket = [[GCDAsyncUdpSocket alloc]initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
[socket connectToHost:host onPort:80 error:nil];
}
-(void)udpSocket:(GCDAsyncUdpSocket *)sock didConnectToAddress:(NSData *)address {
uint64_t connection_id = htonl(0x41727101980);
uint32_t action = htonl(0);
uint32_t transaction_id = htonl(122);
NSMutableData *data = [NSMutableData data];
[data appendBytes:&connection_id length:sizeof(connection_id)];
[data appendBytes:&action length:sizeof(action)];
[data appendBytes:&transaction_id length:sizeof(transaction_id)];
[sock sendData:data toAddress:address withTimeout:-1 tag:1];
}
这样做的窍门,感谢您的帮助:) – Otium 2012-08-04 23:33:24