孙鑫老师的第十五课的视频
中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
还有用的是校园网
怎么办?
中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
还有用的是校园网
怎么办?
{
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;
}
按照King_hhuang的办法尝试一下
{
AfxMessageBox("加载套接字失败!");
return FALSE;
}
用MFC的函数的
0是成功 怎么会这样
的意思是 在外网上吧?你在自己的机子上,可以用"127.0.0.1" 表示本机啊addrsock.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
效果一样
我使用的是AfxSocketInit()
不是表示来自所有的IP消息都可以接受吗?
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;
}
{
AfxMessageBox("加载套接字库失败!");
return FALSE;
}
在创建套接字之前加载套接字库才不会出现问题!