0

私のプログラムにはサーバーとクライアントがあり、ソケットと通信しています。イントラネット環境でテストしても問題ありません。また、インターネット環境で問題なくテストできます。グローバリゼーション サーバーの設定には 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);
            }
    }    

     }
4

1 に答える 1

0

最も可能性の高い理由は、VPNを通過するトラフィックがない状態でタイムアウトになり、切断されて、VPNを介して確立されたすべてのTCP接続がシャットダウンされることです。

于 2012-08-10T12:51:22.853 に答える