我将一个字符串发送到我的服务器(PHP),代码如下:
NSString* str = @"teststring";
NSData* dataToSend = [str dataUsingEncoding:NSUTF8StringEncoding];
uint8_t *dataBytes = (uint8_t *)[dataToSend bytes];
uint64_t length = dataToSend.length;
[outputStream write:dataBytes maxLength:length];
问题是代码,是我没有收到字符串(服务器识别用户输入并在Xcode控制台中收到握手)我测试其他代码并且工作得非常好(接收数据),但是这次我是靠自己尝试的。我相信我没有将消息转换为适当的格式,这就是为什么消息没有收到,我是对的吗?如果是这样,我如何将此消息转换为适当的格式?
答案 0 :(得分:1)
在调用write:...
方法时,您确定输出流是否有空间用于写入多个字节?您只应在write:...
委托方法中的输出流上调用stream:handleEvent:
,并且仅在事件代码为NSStreamEventHasSpaceAvailable
时才会调用。{/ p>
你必须检查结果,看看实际写了多少字节。如果字节数少于您发送的字节数,则只要再次调用stream:handleEvent:
委托方法,就必须将剩余数据排入队列以便稍后重新发送。