我的程序有一个服务器和一个客户端,它们与socket通信。当我在Intranet环境中测试它们时没有问题。在互联网环境中测试它们没有问题。我使用NAT来设置全球化服务器。但是当客户端通过VPN(TinyVPN)与服务器连接时,四分钟后做任何事情,客户端和服务器几乎同时收到一个RST数据包。 为什么客户端通过VPN与服务器连接,因为我公司的服务器和客户端都无法访问互联网环境,所以我使用VPN在我公司上网。 我很困惑,当我使用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);
}
}
}
答案 0 :(得分:0)
最可能的原因是您的VPN超时没有流量通过它并断开连接,从而通过它关闭所有已建立的TCP连接。