0

我正在尝试执行以下操作,在这样的 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 来自 TextField,并且是 NSString* 类型。我想从中获取 ip 地址,因此尝试 inet_aton,它需要一个 char *。如何转换它(使用 ARC)?我上面的尝试失败了,因为没有“选择器 UTF8String 的已知类方法”。另外我想为我的套接字设置一个超时时间,以便我们收到..

4

3 回答 3

2

-UTF8String是一个实例方法,所以你需要使用[theHost UTF8String]which 将返回一个char *.

于 2012-11-14T16:03:22.143 回答
2

只需用于[NSString UTF8String]获取 UTF-8 编码的字符串:

inet_aton([theHost UTF8String], &server_address.sin_addr);
于 2012-11-14T16:04:56.310 回答
0

您编写了 [NSString UTF8String],但 UTF8String 不是静态方法,因此您必须首先创建字符串的实例,您可以将该行替换为:

inet_aton([theHost cStringUsingEncoding:[@"String that you want" UTF8String]], &server_address.sin_addr);
于 2012-11-14T16:15:28.547 回答