0

PCアプリからiPhoneにソケットデータを送信しています。データが到着すると、unsigned(uint8)ではなくsigned値として保存されます。したがって、127を超える値を取得できません。

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

1 に答える 1

1

0x3fASCII'?'です。バイトバッファをUTF-8文字列としてデコードしようとしていますか?もしそうなら、あなたの問題があります。CFReadStreamAPIがデータを混乱させる可能性はほとんどありません。あなたがそうである可能性がはるかに高いです。

于 2011-07-26T06:29:49.587 に答える