0
내 PC 응용 프로그램에서 내 iPhone으로 소켓 데이터를 보내고 있습니다. 데이터가 도착하면 부호없는 값 (uint8) 대신 서명 된 값으로 저장됩니다. 따라서 위의 127 값을 얻을 수 없습니다.iPhone : 서명 된 대신 서명 된 바이트를 저장하는 CFReadStreamRead
0xFF 보낼 때 기본적으로 0x3f 다시.
CFReadStreamRead는 ASCII 문자 전용입니까? 그렇다면 대체품은 무엇입니까?
내 코드 :
CFReadStreamRef readStream = NULL;
CFWriteStreamRef writeStream = NULL;
CFIndex bytes;
UInt8 buffer[128];
UInt8 recv_len = 0;
UInt8 send_len = 0;
//
//Get the native socket that was used
CFSocketNativeHandle sock = *(CFSocketNativeHandle*)data;
//
//Create the read and write streams for this socket
CFStreamCreatePairWithSocket(kCFAllocatorDefault, sock, &readStream, &writeStream);
//
//Check for errors
if (!readStream || !writeStream)
{
close(sock);
fprintf(stderr, "CFStreamCreatePairWithSocket failed.");
return;
}
//
//Open the streams
CFReadStreamOpen(readStream);
CFWriteStreamOpen(writeStream);
//
//Read the command bytes
short command = 0;
memset(buffer, 0, sizeof(buffer));
bytes = CFReadStreamRead(readStream, buffer, 12);
내가 아는 한 내가 그걸 망치고 있지 않다. 읽기 바로 뒤에 중단 점을 넣고 버퍼를 검사하면 0x3f 이상의 값이 '?'로 설정됩니다. – user862821
또한 문자열로 해독하는 데 관심이 없습니다. 난 그냥 변하지 않은 16 진수 값을 원한다. – user862821
윈도우 측에서 사용하고있는 테스트 도구가 바이트 값을 보내기 전에 잘라내는 것처럼 보입니다. GUI가 그러한 표시가 아니었지만. SimpleCom 도구에서이 문제를 조심하십시오. – user862821