我几乎完成了这项任务,但我陷入了困境,因为我得到了部分结果。我有服务器(linux 或 windows)和客户端(iOS),它们之间存在 TCP IP 套接字连接。我在我的 iphone 模拟器中使用了表单加载,其中服务器和 iphone 之间的连接在应用程序打开时自动发生。服务器将我在模拟器上发送的数据发回并在日志中打印。但我无法准确地收到整个回复。对于“创新”,我收到的可能只是“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 的情况下也是如此。即使每次点击我都会发送数据并且我没有得到相同数据的响应。
可以提出宝贵的建议???