我有一个iOS客户端通过TCP/IP与Linux C服务器建立。我面临的问题是: 连接完成后,服务器会等待数据(read())并将其显示在从iPod接收到的屏幕上。然后再次返回到read()等等。我可以一次读取/写入,但不能永久。代码是:iPod客户端永久向C服务器发送数据?
-(void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent
case NSStreamEventHasSpaceAvailable:
event = @"NSStreamEventHasSpaceAvailable";
connectButton.enabled = NO;
disconnectButton.enabled = YES;
if (theStream == oStream)
{
//send data
uint8_t buffer[11] = "I send this";
int len;
len = [oStream write:buffer maxLength:sizeof(buffer)];
if (len > 0)
{
NSLog(@"Data sent");
[oStream close];
}
}
break;
好的。因此,就我所知,一旦在服务器端进行读取,此方法和案例将自动运行。这在服务器的第一次read()调用中很有效,但在第二次调用时,服务器只是在那里挂起一些数据。 日志我有Xcode中显示会发生什么:
2011-06-17 16:23:50.154 sliderFinal [7430:207] >>:NSStreamEventOpenCompleted //一个流的打开
2011-06-17 16:23:50.156 sliderFinal [7430:207] < <:NSStreamEventOpenCompleted //另一个流被打开
2011-06-17 16:23:50.157 sliderFinal [7430:207]数据发送 //中的数据是从服务器第一读()之后发送
2011-06-17 16 :23:50.159 sliderFinal [7430:207] < <:NSStreamEventHasSpaceAvailable //这是指从服务器
我看到的第一个read()调用第一轮后,服务器一直等待的东西。这条消息似乎没有再次达到NSStreamEventHasSpaceAvailable。 任何想法?
得到它的工作,但只有6个小时后,我可以回答我自己的问题-_-生病了。 – StinkyCat