📄 bind()的问题.txt
字号:
作者:rick1126
email: rickzhang@sina.com
日期:7/5/2001 3:12:45 PM
初学Socket编程, 遇到问题如下:
代码-
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
//初始化 Socket 环境
WSADATA wsaData;
CString csInfo;
if ( WSAStartup( WINSOCK_VERSION, &wsaData ) ){
cout << "无法初始化 Socket DLL" << endl;
}
else{
csInfo.Format( "初始化成功:\n\t版本 %s\n\t状态 %s\n\t最大套接字个数 %d\n\t最大UDP端口 %d",
wsaData.szDescription, wsaData.szSystemStatus, wsaData.iMaxSockets, wsaData.iMaxUdpDg );
cout << (LPCTSTR)csInfo << endl;
}
//创建套接字
char szHostname[ MAX_NAMELEN ];
if ( gethostname( szHostname, MAX_NAMELEN ) )
cout << "无法获得主机名称" << endl;
else
cout << "主机名:" << szHostname << endl;
hostent *phost = gethostbyname( szHostname );
if ( phost ){
csInfo.Format( "主机地址: %s", inet_ntoa( *(LPIN_ADDR)*( phost->h_addr_list ) ) );
cout << (LPCTSTR) csInfo << endl;
}
else{
cout << "无法获得主机地址" << endl;
}
SOCKET sktServer;
sktServer = socket( PF_INET, SOCK_STREAM, IPPROTO_TCP );
//建立服务器绑定
SOCKADDR addr;
CString csAddr;
csAddr = inet_ntoa( *( LPIN_ADDR )*( phost->h_addr_list ) );
csAddr.TrimRight();
addr.sa_family = AF_INET;
memset( addr.sa_data, 0, 14 );
memcpy( addr.sa_data, csAddr, csAddr.GetLength() );
int namelen = sizeof( addr );
if ( bind( sktServer, &addr, namelen ) ){
LPVOID lpMsg;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
WSAGetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPSTR) &lpMsg,
0,
NULL
);
cout << (LPCTSTR)lpMsg << endl << addr.sa_data << endl;
LocalFree( lpMsg );
}
else{
cout << "服务器绑定地址 " << addr.sa_data << " 成功" << endl;
}
//撤销环境
WSACleanup();
return nRetCode;
}
执行结果-
初始化成功:
版本 WinSock 2.0
状态 Running
最大套接字个数 32767
最大UDP端口 65467
主机名:rickzhang
主机地址: 10.1.1.86
在其上下文中,该请求的地址无效。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -