2014-11-04 4 views
0

UDP 프로토콜을 사용하여 통신해야하는 iOS 응용 프로그램을 만들고 있습니다 (장치가 동일한 Wi-Fi 네트워크에 연결되어 있음). 소켓을 생성하고 지정된 IP 주소로 데이터를 보내면 :iOS UDP 통신 양방향

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

이 장치는 메시지를받는대로 작동합니다. 문제는 데이터 수신/수신을 어디에서 시작해야할지 전혀 모른다는 것입니다. 나는 도움을 얻기 위해 노력했지만, 슬프게도 어떤 유용한 결과도없이. 대부분의 사람들은 외부 라이브러리를 사용하고 있습니다. 나는 그것을 피하고 싶습니다. 누구든지이 주제에 대한 지침을 줄 수 있다면 정말 감사 할 것입니다.

답변

0

는 좀 더 아침을 검색하고, 사실은 내가이 주제에 무엇을 찾고 있었다 발견 :

UDP broadcast using CFSocket on IOS

이 RunLoop가 마법처럼 작동 구성과 함께, 소켓에 콜백을 추가 :) 콜백에서 데이터를 가져 오려면 다음과 같이하십시오.

NSData * someData = (NSData*)data; 
NSString * someString = [[NSString alloc] initWithData:someData encoding:NSASCIIStringEncoding]; 

희망이 있으면 도움이 될 것입니다.