2

我目前正在开发一个使用 CFStream 与 C# 服务器通信的 iOS 应用程序。通过此连接发送 1 个 TCP 数据包可以完成它应该做的事情。但是,如果我尝试发送两个数据包,它们都会失败。

服务器被设计为像这里的那样异步。iOS 端是使用 CFStream 类设计的,如教程中所述。

为什么会发生这种情况,我该如何解决?非常感谢所有帮助!

编辑:我刚刚尝试用 Python 服务器替换 C# 服务器,并且系统运行完美,这暗示问题出在服务器端。也许服务器在收到第一个数据包后不小心关闭了连接?

4

2 回答 2

1

首先确定谁在关闭 TCP 套接字。在服务器上运行Wireshark以检查谁在该连接中发送 FIN 或 RST。这将把问题分成两半。

于 2012-05-20T23:08:30.337 回答
0

事实证明,服务器设置为在向客户端发送第一个信息包后关闭连接。解决方案是添加一个

handler.BeginReceive( state.buffer, 0, StateObject.BufferSize, 0,
        new AsyncCallback(ReadCallback), state);

在 ReadCallback() 方法中,以确保它在处理其请求后会继续侦听客户端。

于 2012-05-26T21:15:02.617 回答