Sockets Windows防火墙处于打开状态时,Winsock Connect函数花费的时间太长
我制作了一个客户端,当服务器上的windows防火墙关闭时,它将立即连接到服务器,但当防火墙打开时,它需要大约30-35秒才能连接到服务器。我已经尝试在服务器上为我的应用程序和端口添加防火墙例外,但没有任何效果,仍然需要相同的时间 以下是我尝试连接服务器的客户端代码:Sockets Windows防火墙处于打开状态时,Winsock Connect函数花费的时间太长,sockets,network-programming,winsock,winsock2,windows-firewall,Sockets,Network Programming,Winsock,Winsock2,Windows Firewall,我制作了一个客户端,当服务器上的windows防火墙关闭时,它将立即连接到服务器,但当防火墙打开时,它需要大约30-35秒才能连接到服务器。我已经尝试在服务器上为我的应用程序和端口添加防火墙例外,但没有任何效果,仍然需要相同的时间 以下是我尝试连接服务器的客户端代码: bool connectSocket() { _connectSocket = socket(PF_INET, SOCK_STREAM,0); if(
bool connectSocket()
{
_connectSocket = socket(PF_INET, SOCK_STREAM,0);
if(_connectSocket == INVALID_SOCKET)
{
LOG_ERROR("Failed intiating socket with partner.");
return false;
}
struct sockaddr_in thataddr;
memset(&thataddr,0,sizeof(thataddr));
thataddr.sin_addr.s_addr = inet_addr(_partnerIP.c_str());
thataddr.sin_family = AF_INET;
thataddr.sin_port = htons(_partnerPort);
int i = ::connect(_connectSocket,(struct sockaddr *)&thataddr,sizeof(thataddr));
if(i<0)
{
//i = WSAGetLastError();
LOG_WARNING("Failed connecting to partner. Check partner status.");
return false;
}
}
当服务器上的防火墙打开时::connect函数将花费30-35秒给出错误。
我们非常感谢您在这方面提供的任何帮助。
谢谢在您的客户程序中,您无能为力。但是我建议使用一个程序来检查通信,例如服务器机器发送回什么,如果有什么等。你确定是连接需要时间,而不是inet_addr吗?@EJP是的,我检查了它的连接功能需要时间。