SOCKET编程 重新连接问题

xiaocainiao666 2016-07-26 05:43:04
WSADATA wsaData;
WSAStartup(0x0202,&wsaData);
readerip = _T("");
GetDlgItem(IDC_CONNECT)->GetWindowText(connetstate);
if (connetstate == _T("断开"))
{
inow = 0;
sockstate = 0;
editstr = _T("");
stredit = _T("");
serverstate = 0;
connetstate = _T("连接...");
sockstr = _T(" Disconnected");
CString port=_T("");
GetDlgItem(IDC_PORT)->SetWindowText(port);
GetDlgItem(IDC_edit)->SetWindowText(sockstr);
GetDlgItem(IDC_CONNECT)->SetWindowText(connetstate);
shutdown(sockSrv, 0x02);
shutdown(sockConn, 0x02);
closesocket(sockSrv);
closesocket(sockConn);
WSACleanup(); // 终止对套接字库的使用
TerminateThread(hThraeadSock, EXIT_FAILURE);
CloseHandle(hThraeadSock);
return;
}
inow = 0;
//建立套接字
sockSrv = socket(AF_INET, SOCK_STREAM, 0);
//套接字与本地地址相连
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(8235);
//将套接子与指定端口链接
if (bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR)) == -1)
{
shutdown(sockSrv, 0x02);
closesocket(sockSrv);
WSACleanup(); // 终止对套接字库的使用
sockstr = _T("connection failed...");
GetDlgItem(IDC_edit)->SetWindowText(sockstr);
return;
}
if ((listen(sockSrv,200))== SOCKET_ERROR)
{

shutdown(sockSrv, 0x02);
closesocket(sockSrv);
WSACleanup(); // 终止对套接字库的使用
sockstr = _T("connection failed...");
GetDlgItem(IDC_edit)->SetWindowText(sockstr);
return;
}


软件打开之后我忘记插网线了,连接不上;我网线插上之后,连接还是失败;软件关掉打开之后,连接又成功了,这是怎么回事?
...全文
194 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaocainiao666 2016-07-27
  • 打赏
  • 举报
回复
引用 1 楼 VisualEleven 的回复:
你链接不上有释放之前的SOCKET资源吗?
shutdown(sockSrv, 0x02);
        closesocket(sockSrv);
        WSACleanup();   // 终止对套接字库的使用  
这个不是释放资源么?
赵4老师 2016-07-27
  • 打赏
  • 举报
回复
WSACleanup();只需且必须在退出整个程序之前调用一次。
zgl7903 2016-07-27
  • 打赏
  • 举报
回复
不成功的地方 WSAGetLastError 查看错误代码 设置一个断点, 运行进入单步调试,
Eleven 2016-07-26
  • 打赏
  • 举报
回复
你链接不上有释放之前的SOCKET资源吗?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧