使用 ARC 将 NSString* 转换为字符*



>我正在尝试执行以下操作,在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);

最新更新