목표 -c에서 토런트 스크래퍼를 만들려고하고 있는데 UDP를 통해 데이터 패킷을 보내려면 CocoaAsyncSocket을 사용하고 있습니다. BitTorrent UDP Tracker Protocol 다음. Wireshark를 사용하여 패킷이 전송되었지만 추적기가 아무것도 보내지 않는다는 것을 확인했습니다. 필자는 데이터 조작에 대한 경험이 거의 없기 때문에 보낸 데이터를 정리하는 데 잘못된 것을하고 있다고 가정합니다. 지금 막 protocol의 연결 요청을 성공적으로 완료하려고합니다.CocoaAsyncSocket을 사용하여 Objective-C의 토런트 추적기에 UDP를 통해 패킷 보내기
- (BOOL)beginReceiving:(NSError **)errPtr;
이 보장됩니다 대리자 방법은 패킷이 들어올 때마다 호출된다 : 여기에 코드
-(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