我目前正在开发一个使用CFStream与C#服务器通信的iOS应用程序。通过此连接发送1个TCP数据包可以实现其应有的功能。但是,如果我尝试发送两个数据包,它们都会失败。
服务器设计为异步here。 iOS端是使用CFStream类设计的,如this教程中所述。
为什么会发生这种情况,我该如何解决?非常感谢所有帮助!
编辑:我刚刚尝试用Python服务器替换C#服务器,系统运行良好,这暗示问题是服务器端。也许服务器在收到第一个数据包后意外关闭了连接?答案 0 :(得分:1)
首先确定谁正在关闭TCP套接字。在服务器上运行Wireshark以检查谁在该连接中发送FIN或RST。这将把问题分成两半。
答案 1 :(得分:0)
事实证明,服务器设置为在将第一个信息包发送到客户端后关闭连接。解决方案是添加
handler.BeginReceive( state.buffer, 0, StateObject.BufferSize, 0,
new AsyncCallback(ReadCallback), state);
在ReadCallback()方法中,以确保它在处理完请求后继续侦听客户端。