【问题标题】:Server don't receive data send by iOS服务器收不到 iOS 发送的数据
【发布时间】:2016-05-07 16:24:08
【问题描述】:

我正在使用以下代码向我的服务器 (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 控制台中收到握手)我测试其他代码并且工作得很好(接收数据),但是在这次我自己尝试。我相信我没有将消息转换为适当的格式,这就是没有收到消息的原因,对吗?如果是这样,我如何将此消息转换为适当的格式?

【问题讨论】:

    标签: ios objective-c sockets nsstring nsdata


    【解决方案1】:

    当您调用write:... 方法时,您确定输出流有空间可以写入那么多字节吗?您应该只在 stream:handleEvent: 委托方法内的输出流上调用 write:...,并且仅当事件代码为 NSStreamEventHasSpaceAvailable 时。

    必须检查结果以查看实际写入了多少字节。如果它比您发送的字节少,您必须将剩余数据排入队列以便稍后重新发送,每当您的 stream:handleEvent: 委托方法再次被调用时。

    更多详情,请参见: https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Streams/Articles/WritingOutputStreams.html

    【讨论】: