有人知道在获取源地址时CocoaAsyncSockets中接收UDP数据的委托方法是如何工作的吗?特别是方法
-(void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData *)data fromAddress:(NSData *)address withFilterContext:(id)filterContext
地址以NSData*
的形式返回,但使用NSUTF8StringEncoding
解释它会返回null
,而NSASCIIStringEncoding
会返回一堆乱码。它应该如何解释?
答案 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];