客户端关闭socket连接后再重新连接出现的问题
在下初学socket编程,发现我写的代码当客户端关闭socket连接后,如果再重新连接服务器,就必须过一段时间(1分钟左右)才能连上,客户端主要代码:
对话框上“连接”按钮:
s = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //s是对话框类的成员变量SOCKET s;
if(s == INVALID_SOCKET)
{
AfxMessageBox(" Failed socket()",64);
::closesocket(s);
return 0;
}
sockaddr_in sin; //客户端地址
sin.sin_family = AF_INET;
sin.sin_port = htons(123);
sin.sin_addr.S_un.S_addr = inet_addr("192.168.1.2");
if(::bind(s, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)
{
AfxMessageBox("Failed bind()",64);
::closesocket(s);
return 0;
}
// 服务器地址
sockaddr_in servAddr;
servAddr.sin_family = AF_INET;
servAddr.sin_port = htons(120);
servAddr.sin_addr.S_un.S_addr = inet_addr("192.168.1.1");
if(::connect(s, (sockaddr*)&servAddr, sizeof(servAddr)) == -1)
{
AfxMessageBox(" Failed connect()",64);
::closesocket(s);
return 0;
}
else
AfxMessageBox("连接成功",64);
//......发送数据........
“断开”按钮代码:
if(::closesocket(s)==0)
AfxMessageBox("断开成功",64);
socket库的初始化与释放在对话框类处理了,运行程序,第一次点“连接”则马上成功,点“断开”也能顺利与服务器断开连接;但是再一次点“连接”,则出现" Failed connect()"了,不知是什么原因,再过一两分钟再点“连接”则成功了。
请大家指点,怎么解决此问题?
谢谢!