我已經用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,流... –