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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/98783.html
標籤:網絡及通訊開發
上一篇:移位運算子
下一篇:MFC基礎類停止作業,為什么?
