iOS UDP双向通信
我正在制作一个iOS应用程序,它应该使用UDP协议进行通信(这些设备连接到同一个Wi-Fi网络)。我设法创建了一个套接字,并将一些数据发送到指定的IP地址:iOS UDP双向通信,ios,sockets,Ios,Sockets,我正在制作一个iOS应用程序,它应该使用UDP协议进行通信(这些设备连接到同一个Wi-Fi网络)。我设法创建了一个套接字,并将一些数据发送到指定的IP地址: const char *ip = "192.168.1.100"; - (void)initNetworkCommunication { cfSocket = CFSocketCreate(kCFAllocatorDefault, AF_INET, SOCK_DGRAM, IPPROTO_UDP, 0, NULL, NULL);
const char *ip = "192.168.1.100";
- (void)initNetworkCommunication {
cfSocket = CFSocketCreate(kCFAllocatorDefault, AF_INET, SOCK_DGRAM, IPPROTO_UDP, 0, NULL, NULL);
if ( cfSocket == NULL) {
NSLog(@"CfSocketCreate failed");
}else{
if( cfSocket ) {
NSLog(@"Socket created ");
struct sockaddr_in addr;
memset(&addr, 0, sizeof(addr));
addr.sin_len = sizeof(addr);
addr.sin_family = AF_INET;
addr.sin_port = htons(1470); //port
inet_pton(AF_INET,ip, &addr.sin_addr); //ip adress
CFDataRef addrData = CFDataCreate(NULL, (const UInt8*)&addr, sizeof(addr));
CFSocketSetAddress (cfSocket, addrData);
char message []= "UDP test message";
CFDataRef Data = CFDataCreate(NULL, (const UInt8*)message, sizeof(message));
CFSocketSendData(cfSocket,addrData, Data, 0);
}
}
我认为这很有效,因为设备得到了信息。问题是我真的不知道从哪里开始监听/接收数据。我试图寻找一些帮助,但遗憾的是没有任何有用的结果。大多数人都在使用外部库,这是我想要避免的。如果有人能在这个话题上给我一些指导,我将非常感谢 今天早上我又搜索了一些,并在这个主题中找到了我想要的: 将回调添加到套接字,以及配置RunLoop的工作方式类似于一个符咒:),如果您想从回调中获取数据,只需使用以下方法:
NSData * someData = (NSData*)data;
NSString * someString = [[NSString alloc] initWithData:someData encoding:NSASCIIStringEncoding];
希望这对别人有帮助