C++网络编程中 套接字问题

boydenyol 2015-06-18 03:21:11
if(m_serSocket.InitAndListen(this->m_hWnd,m_uport)==FALSE)
{
return;
}
else
{
m_bInit=TRUE;
m_bClient=FALSE;
CString str;
str= "服务器设置成功!/n";
GetDlgItem(IDC_SHOWTEXT)->SetWindowText(str);
}



下面这个是自己创建的一个类的函数,不知道为什么在绑定套接字的时候会出现 在一个非套接字上尝试了一个操作
BOOL CServer::InitAndListen(HWND hwnd, UINT port)
{
m_uPort=port;
m_hWnd=hwnd;
if (m_hSocket!=NULL)
{
closesocket(m_hSocket);
m_hSocket=NULL;
}
if (m_hSocket=NULL)
{
m_hSocket=socket(AF_INET,SOCK_STREAM,0);
ASSERT(m_hSocket!=NULL);
if (WSAAsyncSelect(m_hSocket,m_hWnd,SER_MESSAGE,FD_ACCEPT|FD_READ|FD_WRITE|FD_CLOSE)>0)
AfxMessageBox("设置事件出错");

}
m_addr.sin_family=AF_INET;
m_addr.sin_addr.S_un.S_addr=INADDR_ANY;
m_addr.sin_port=htons(m_uPort);
int ret;
ret=bind(m_hSocket,(LPSOCKADDR)&m_addr,sizeof(m_addr));
if (ret=SOCKET_ERROR)
{
TCHAR szBuf[128];
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0, NULL );
MessageBox(NULL, (LPCTSTR)lpMsgBuf, "错误信息", MB_OK | MB_ICONINFORMATION );
LocalFree(lpMsgBuf);
AfxMessageBox("绑定出错");
return FALSE;
}
ret=listen(m_hSocket,5);
if (ret=SOCKET_ERROR)
{
AfxMessageBox("监听失败");
return FALSE;
}
...全文
305 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,314

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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