我已经用Python编写了一个服务器(Twisted),现在想连接它与iOS,但有一些麻烦。NSStream,发送/接收数据
这是我如何连接到服务器:
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"localhost", 3000, &readStream, &writeStream);
inputStream = (NSInputStream *)readStream;
outputStream = (NSOutputStream *)writeStream;
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];
问题自带RunLoop。想象一下,我不想向服务器发送一条消息。然后我会这样做:
NSData *data = [[NSData alloc] initWithData:[message dataUsingEncoding:NSASCIIStringEncoding]];
[outputStream write:[data bytes] maxLength:[data length]];
但是如果我不想发送两个消息,一个接一个?然后我可以运行带有message1和message2的代码...但是客户端发送的是message1 + message2的并置,而不是两个不同的消息。我想这是因为我在相同的“循环”中将消息写入outputStream,所以当流最终决定发送数据时,它将同时发送......我找不出任何解决方案。如果SERVER以非常快的速度向CLIENT发送多条消息,则会发生同样的情况。我该怎么办?
是有,你可以调用任何冲洗方法? –
@NicolasManzini我不这么认为......我在谷歌搜索,没有发现任何东西。我是新来的服务器,TCP,流... –