私のプログラムにはサーバーとクライアントがあり、ソケットと通信しています。イントラネット環境でテストしても問題ありません。また、インターネット環境で問題なくテストできます。グローバリゼーション サーバーの設定には NAT を使用します。しかし、クライアントが VPN(TinyVPN) を介してサーバーに接続し、4 分後に何かを行うと、クライアントとサーバーはほぼ同時に 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);
}
}
}