0

tcp/ip 연결을 생성하여 목적면 c에서 서버 측에서 파형을 생성하는 일부 16 진수 패킷을 보내려고합니다. 내 문제는 데이터를 보낼 수 있다는 것입니다. 서버 측에서도 파형을 볼 수 있습니다.하지만 네트워크 지연으로 인해 파형이 겹치기 때문에 (서버가 5 분마다 패킷을 동기화하려고하는 이유가 무엇인지) 여기에 내 질문 패킷이 동기화 될 때까지 내가전체 데이터를 보낼 때까지 dispatch_queue를 차단하십시오.

dispatch_queue_t connectionTest=dispatch_queue_create("myQueue", DISPATCH_QUEUE_SERIAL); 
        dispatch_async(connectionTest, ^{ 
        if(outputStream) 
        { 

         NSInteger sizeOfPacket=13; 
         unsigned char myPacket[13]; 
         unsigned char crcCal=0; 
         myPacket[0]=START_OF_HEADER; 
         myPacket[1]=START_OF_TEXT; 
         myPacket[2]=8; 
         myPacket[3]=0x6a; 
         myPacket[4]=0x06; 
         myPacket[5]=0x80; 
         myPacket[6]=Some value;// 
         myPacket[7]=0x80; 
         myPacket[8]=Some value;// 
         myPacket[9]=0x54;//changed 54 to 50 
         myPacket[10]=0x04; 
         for (int j=3;j<myPacket[2]+3;j++) 
         { 
          crcCal=crcTable[crcCal^myPacket[j]]; 
         } 
         myPacket[11]=crcCal; 
         myPacket[12]=END_OF_TEXT; 

         NSLog(@"crc value is %c",crcCal); 


         NSData* dataPacket = [NSData dataWithBytes:(const void *)myPacket length:sizeof(unsigned char)*sizeOfPacket]; 
         [outputStream write:[dataPacket bytes] maxLength:[dataPacket length]]; 

        } 
        }); 

답변

0

한 가지 방법은 dispatch_suspend에 내에서 보내는 큐 수 있습니다 서버에 다른 packket을 보내 해달라고하는 방식으로 서버에 패킷을 전송하는 방법을 기본적으로 블록을 보내고 패킷을 보낸 다음 dispatch_resume 보내는 큐에서 서버의 승인을받는 코드를 수신합니다.