TCPClient&套接字无法连接到服务器

时间:2014-07-10 13:29:51

标签: c# .net sockets tcpclient

我在TCPListener / TCPClient的基础上与服务器的连接有一个非常奇怪的问题。在测试期间的某个时刻,我无法再连接到我的服务器应用程序,每次都尝试超时。双方的Netstats都表示,我的应用程序正在侦听正确的端口,并且客户端正在尝试连接到正确的IP和端口,但它没有超过" SYN_SENT"。服务器只显示" LISTENING"每时每刻。我所能做的就是重启我的电脑,暂时解决了这个问题。但经过一些联系后,它又重新开始了。 到目前为止,我测试了TCPClient和Sockets类以连接到服务器,但两者都显示了这种行为,这并不奇怪,因为TCPClient是套接字类的一个包装器。

双方都检查防火墙,远程桌面之类的工作完全正常,并且没有阻止我的应用程序的连接。没有任何关系可以关闭或者什么东西,已经把我知道的所有内容都扯掉了(可能没那么多;)

那么问题是什么?

编辑:

需要连接到我的服务器的方法:

public int GetSomeDataFromServer(string blargh)
    {
        int ret;
        try
        {
            using(ConnectionTCPStream ctp = new ConnectionTCPStream())
            {
                if(ctp.EstSecConnWithServ())
                {
                    ret = CKSHandler(ctp, blargh);
                }
                else
                { ret = (int)ErrFlags.ServerDeniedConnection; }
            }
            return ret;
        }
        catch(Exception)
        {
            InternalError = ErrFlags.ServerUnreachable;
            return (int)ErrFlags.ServerUnreachable;
        }
    }

我的类的构造函数正在处理Connections:

public ConnectionTCPStream()
    {
        Client = new TcpClient("VeryImportantAdress", 49778); //it fails right here!
        rsaCrypt = new RSACH() { RSAForeignPubKey = "An 8192-Bit long RSA Public key." };
        AESPASS = AESThenHMAC.CreatePassword(200);
    }

2 个答案:

答案 0 :(得分:1)

听起来你正在用完所有的连接或其他资源。

当你做netstat -an时,你看到了什么?你看到一堆开放的端口吗?

这里有一篇文章可以帮助你here

其他一些资源可能会杀死你,当你遇到这种情况时,可能值得让SA启动资源监视器以检查主机的运行状况。

如果没有抛出任何错误,它会让你的生活更加艰难。当您没有干净地清理套接字断开连接时,通常会发生此问题。

答案 1 :(得分:0)

答案是防火墙时不时改变主意。我之前无法测试,因为我无法访问它。现在我已经更改了设置,而我有这个封锁,它再次正常工作。所以答案是:始终可以访问防火墙,不要忘记检查它。