【问题标题】:How to fetch address from CocoaAsyncUDPSocket [duplicate]如何从 CocoaAsyncUDPSocket 获取地址 [重复]
【发布时间】:2013-08-02 08:01:07
【问题描述】:

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

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

地址返回为NSData*,但使用NSUTF8StringEncoding 解释它返回nullNSASCIIStringEncoding 返回一堆乱码。应该怎么解释?

【问题讨论】:

  • 是的,我想完成的事情或多或少是一样的。但是,我确实找到了比那里发布的更有效的解决方案。
  • 对于 IPv4 地址没问题。我在那里发布了“更复杂”的代码,因为它也适用于越来越多的 IPv6。
  • 啊哈,明白了。 :) 谢谢

标签: ios objective-c udp cocoaasyncsocket


【解决方案1】:

想出了怎么做,数据是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];

【讨论】:

    猜你喜欢
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 2011-10-09
    • 2020-12-19
    相关资源
    最近更新 更多