我在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);
}
答案 0 :(得分:1)
听起来你正在用完所有的连接或其他资源。
当你做netstat -an时,你看到了什么?你看到一堆开放的端口吗?
这里有一篇文章可以帮助你here
其他一些资源可能会杀死你,当你遇到这种情况时,可能值得让SA启动资源监视器以检查主机的运行状况。
如果没有抛出任何错误,它会让你的生活更加艰难。当您没有干净地清理套接字断开连接时,通常会发生此问题。
答案 1 :(得分:0)
答案是防火墙时不时改变主意。我之前无法测试,因为我无法访问它。现在我已经更改了设置,而我有这个封锁,它再次正常工作。所以答案是:始终可以访问防火墙,不要忘记检查它。