我的程序有一个服务器和一个客户端,当我在intranet环境中测试它们时,它们之间的通信会遇到socket.No问题。在Internet环境下测试没有问题。我使用NAT设置全球化服务器。但是当客户端通过虚拟专用网(TinyVPN)与服务器连接,并在4分钟后做任何事情时,客户端和服务器几乎同时收到一个远程测试包。为什么客户端和服务器通过VPN连接,因为我公司的服务器和客户端都不能作为internet环境访问,所以我在公司使用VPN来实现internet访问。我很困惑,当我使用wireshark捕获服务器和客户端的最后一个数据包时,它们几乎同时收到一个RST数据包。我也是谷歌搜索RST,对这个问题有很多意见。我不关闭操作,并做任何通信操作。只连接并等待,4分钟后收到一个RST数据包,我不知道原因。请帮帮你。我复制了部分源代码,如下所示。
private void OnReadComplete( IAsyncResult ar )
{
ClientUser currentUser;
int CbRead = -1;
try
{
lock (this.syncSocket)
{
//set current opration usser
currentUser = (ClientUser)ar.AsyncState;
//Notice::::::::::::::There have a error
CbRead = currentUser.Stream.EndRead(ar);
}
}
catch(IOException IOExcep)
{
if (m_ClientUser.IsConnected)
{
DisconnectClient();
LogOutput.Logger.Error("IOExcep, Error: " + IOExcep.Message);
}
}
}发布于 2012-08-10 20:51:23
最可能的原因是您的VPN超时,没有流量流经它并断开连接,从而关闭了通过它建立的所有TCP连接。
https://stackoverflow.com/questions/11897073
复制相似问题