Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS UDP双向通信_Ios_Sockets - Fatal编程技术网

iOS UDP双向通信

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);

我正在制作一个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);

    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];
希望这对别人有帮助