ios - 服务器收不到iOS发送的数据

标签 ios objective-c sockets nsstring nsdata

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

最佳答案

当您调用 write:... 方法时,您确定输出流有足够的空间写入那么多字节吗?您应该仅在 stream:handleEvent: 委托(delegate)方法中对输出流调用 write:...,并且仅当事件代码为 NSStreamEventHasSpaceAvailable.

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

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

关于ios - 服务器收不到iOS发送的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37090922/

相关文章:

javascript - React Native 永远挂起

objective-c - 自定义UINavigationBar图像

objective-c - 将文件重命名为 .mm 后如何进行 Objective C 样式分配

objective-c - "Clean and Build"到底是做什么的?

ios - 核心数据模型设计

java - 如何在单台 linux 机器上创建 50000 个 tcp 连接?

ios - 如何在 DialogViewController (Monotouch.Dialog) 上设置背景颜色

ios - UIPasteboard无法多次复制带有过期时间的文本

Python 套接字 : Send/receive multiple message

c# - TCP Socket中SocketError.ConnectionReset的可能原因有哪些