>我正在尝试执行以下操作,在Iphone应用程序中设置udp连接,如下所示:
struct sockaddr_in server_address;
CFDataRef server_address_data;
....
memset(&server_address, 0, sizeof(server_address));
server_address.sin_len = sizeof(server_address);
server_address.sin_family = AF_INET;
server_address.sin_port = htons(thePort);
inet_aton([theHost cStringUsingEncoding:[NSString UTF8String]], &server_address.sin_addr);
// put server address into CFData
server_address_data = CFDataCreate(NULL, (uint8_t *) &server_address, sizeof(server_address));
// set timeout (ACK and RESULT packets) for socket
????
现在,我有以下问题:变量 theHost 来自文本字段,类型为 NSString*。我想从中获取 IP 地址,因此尝试inet_aton,这需要一个字符 *。如何转换它(使用 ARC)?我上面的尝试失败了,因为"选择器 UTF8String 没有已知的类方法"。我还想为我的套接字设置超时,以便我们收到。.
只需使用 [NSString UTF8String]
即可获取 UTF-8 编码字符串:
inet_aton([theHost UTF8String], &server_address.sin_addr);
-UTF8String
是一个实例方法,所以你需要使用[theHost UTF8String]
它将返回一个char *
。
你写了 [NSString UTF8String],但 UTF8String 不是一个静态方法,所以你必须先创建字符串的实例,你可以用:
inet_aton([theHost cStringUsingEncoding:[@"String that you want" UTF8String]], &server_address.sin_addr);