套接字创建失败

场景:套接字创建失败怎么处理

套接字创建失败怎么办
孙鑫老师的第十五课的视频
中BOOL CChatDlg::InitSocket()
{
  m_socket=socket(AF_INET,SOCK_DGRAM,0);
 if(INVALID_SOCKET==m_socket)
  {
MessageBox("套接字创建失败!");
return FALSE;
  }
  SOCKADDR_IN addrsock;
  addrsock.sin_family=AF_INET;
  addrsock.sin_port=htons(5000);
  addrsock.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
  int retval;
  retval=bind(m_socket,(SOCKADDR*)&addrsock,sizeof(SOCKADDR));
  if(SOCKET_ERROR==retval)
  {
closesocket(m_socket);
MessageBox("绑定失败!");
return FALSE;
  }
  return TRUE;
}
运行时弹出套接字创建失败 求高手指点
ps:本人用的是MFC
还有用的是校园网
怎么办?

------解决方案--------------------
if(INVALID_SOCKET==m_socket)
{
MessageBox("套接字创建失败!");
return FALSE;
}

这MessageBox后面加以下代码:

int nCodeError=::GetLastError();

CString s;
s.Format("%d",nCodeError);
MessageBox(s,MB_OK);
return false;


//捕捉错误原因!!
------解决方案--------------------
有没有加这段代码啊
#include <Winsock2.h>
#pragma comment(lib,"Ws2_32")


WSADATA wsaData;
WORD version=MAKEWORD(2,0);
int ret=WSAStartup(version,&wsaData);
if(ret!=0) 
{
MessageBox("Init Error");
return FALSE;
}
------解决方案--------------------
要初始化套接字库
------解决方案--------------------
已经修改了, 发到你邮箱里面了

初始化要初始化套接字库 要在创建套接字之前,是顺序错误导致的
------解决方案--------------------

UINT CMySocket::InitSocket()
{
WORD wVersionRequested;
WSADATA wsadata;

wVersionRequested = MAKEWORD(2,2);

int nErrCode;
nErrCode = WSAStartup(MAKEWORD(2,2),&wsadata);

if (0 != nErrCode)
{
//没有找到可用的套接字
MessageBox(NULL,"没有找到可用的DLL","初始化失败",MB_OK);
}


socket1 = socket(AF_INET,SOCK_DGRAM,0);
ZeroMemory(buf,1024);
sockaddr_in1.sin_addr.s_addr=inet_addr("127.0.0.1");
sockaddr_in1.sin_family=AF_INET;
sockaddr_in1.sin_port=htons((short)8000);
return 0;
}

这是用另一种方法初始化,发送方

下面是接收方



int MySocket::InitSocket()
{
WORD wVersionRequested;
WSADATA wsadata;

wVersionRequested = MAKEWORD(2,2);

int nErrCode;
nErrCode = WSAStartup(MAKEWORD(2,2),&wsadata);

if (0 != nErrCode)
{
//没有找到可用的套接字
//MessageBox(NULL,"没有找到可用的DLL","初始化失败",MB_OK);
}


sockaddr_in1.sin_addr.s_addr=htonl(INADDR_ANY);
sockaddr_in1.sin_family=AF_INET;
sockaddr_in1.sin_port=htons((short)8000);

nClientLen = sizeof(sockaddr_in1);

socket1 = socket(AF_INET,SOCK_DGRAM,0);

bind(socket1,(SOCKADDR*)&sockaddr_in1,nClientLen);
return 0;
}