⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bind()的问题.txt

📁 C&C++论坛精华
💻 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 + -