如何从CocoaAsyncUDPSocket获取地址

时间:2013-08-01 11:54:12

标签: ios objective-c udp cocoaasyncsocket

有人知道在获取源地址时CocoaAsyncSockets中接收UDP数据的委托方法是如何工作的吗?特别是方法

-(void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData *)data fromAddress:(NSData *)address withFilterContext:(id)filterContext

地址以NSData*的形式返回,但使用NSUTF8StringEncoding解释它会返回null,而NSASCIIStringEncoding会返回一堆乱码。它应该如何解释?

1 个答案:

答案 0 :(得分:2)

想出如何做到这一点,数据采用struct sockaddr_in*的形式。导入<arpa/inet.h>后,您可以执行以下操作:

struct sockaddr_in *addr = (struct sockaddr_in *)[address bytes];
NSString *IP = [NSString stringWithCString:inet_ntoa(addr->sin_addr) encoding:NSASCIIStringEncoding];