私はこのタスクをほぼ完了しましたが、部分的な結果が得られたため、ポイントに行き詰まりました。TCP IPソケット接続が存在するサーバー(LinuxまたはWindows)とクライアント(iOS)があります。アプリケーションが開くとサーバーとiphoneの間の接続が自動的に行われるiphoneシミュレーターでフォームロードを使用しました。サーバーは、シミュレーターで送信したデータを送り返し、ログに出力します。しかし、私は応答全体を正確に受け取ることができません。"Innovations" については、"in" や "Innova" などを受け取ります。以下にコード スニペットを示します。
void TCPClient()
{
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, host, port, &readStream, &writeStream);
[NSThread sleepForTimeInterval:2]; //Delay
CFWriteStreamSetProperty(writeStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
if(!CFWriteStreamOpen(writeStream))
{
NSLog(@"Error Opening Socket");
}
else
{
UInt8 buf[] = "Innovations";
int bytesWritten = CFWriteStreamWrite(writeStream, buf, strlen((char*)buf));
NSLog(@"Written: %d", bytesWritten);
}
CFReadStreamSetProperty(readStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
if(!CFReadStreamOpen(readStream))
{
NSLog(@"Error reading");
}
else
{
UInt8 bufr[15];
int bytesRead = CFReadStreamRead(readStream, bufr,strlen((char*)bufr));
NSLog(@"Read: %d", bytesRead);
NSLog(@"buffer: %s", bufr);
}
}
配列のサイズを変更したことに注意してください。しかし、私はまだエラーが発生します。ボタンの IBAction の場合も同様です。それでも、クリックするたびにデータを送信していますが、同じデータの応答が得られません。
貴重な提案はできますか???