iOS 的 GCDAsyncSocket 未写出缓冲区

kha*_*liq 2 sockets ios cocoaasyncsocket gcdasyncsocket

基本上我写了一个 NSData 对象:

[asyncSocket writeData:JSONRequestData withTimeout:-1 tag:1];
Run Code Online (Sandbox Code Playgroud)

当运行时,调用委托

- (void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)tag
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,当写入到缓冲区时......它没有写出到服务器。

当我停止构建时,我猜套接字决定写入所有内容,并且服务器最终会看到它。

我该如何解决这个问题?没有办法刷新 CocoaAsyncSocket,因为它没有必要...我尝试添加行结尾,例如“/n”等,但这也没有任何作用。

kha*_*liq 5

这是基于用户523234的建议。

基本上,您正在写出的 NSData 需要有某种信号来告诉套接字不再有数据传入。

我附加了

[GCDAsyncSocket CRLFData];
Run Code Online (Sandbox Code Playgroud)

到 NSData 对象

注意:要使用

appendData:
Run Code Online (Sandbox Code Playgroud)

方法中,必须将NSData转换为NSMutableData。