我已经用Python (Twisted)编写了一个服务器,现在想用iOS连接它,但遇到了一些麻烦。
这是我连接到服务器的方式:
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,所以当流最终决定发送数据时,它会同时发送两个...我想不出任何解决办法。如果服务器“非常快”地向客户端发送多条消息,也会发生同样的情况。我该怎么办?
发布于 2013-07-12 22:54:54
定义“协议”-基本上是一种“语法”,它定义了参与者将理解的“语言”。
最简单的方法是定义标记和分隔符以及相应的解析器。
例如,您可能定义了一个由单个字符组成的消息,多个消息将由一个或多个空格分隔。然后,您可以通过网络发送以下内容:
A、B、C、D、E
https://stackoverflow.com/questions/17617229
复制相似问题