如何创建IP地址和端口到NSData中以便与
答
从头文件:
* Binds the UDP socket to the given address, specified as a sockaddr structure wrapped in a NSData object.
*
* If you have an existing struct sockaddr you can convert it to a NSData object like so:
* struct sockaddr sa -> NSData *dsa = [NSData dataWithBytes:&remoteAddr length:remoteAddr.sa_len];
* struct sockaddr *sa -> NSData *dsa = [NSData dataWithBytes:remoteAddr length:remoteAddr->sa_len];
所以,你需要一个sockaddr
:
#include <netinet/in.h>
#include <arpa/inet.h>
struct sockaddr_in ip;
ip.sin_family = AF_INET;
ip.sin_port = htons(6003);
inet_pton(AF_INET, "0.0.0.0", &ip.sin_addr);
NSData * discoveryHost = [NSData dataWithBytes:&ip length:ip.sin_len];
这里有sockaddr
一些文档 - 在Xcode 5.1.1本http://www.beej.us/guide/bgnet/output/html/multipage/sockaddr_inman.html
与iOS 7.1 SDK代码似乎需要一些调整。 'inet_pton()'似乎在''中声明,除了''(用于'sockaddr'结构)以外,还需要''sa_len'成员用于调用' - [NSData dataWithBytes:length]'应该是'sin_len'(不确定这是否最初是打字错误或SDK中的更改)。 –
Jasarien
2014-08-18 14:19:20
你不能自己设置'ip.sin_len'。它不是神奇的初始化。你必须初始化它。你可以将它设置为'sizeof(ip)'。 – 2016-11-25 04:01:27