我的服务器已经启动并运行(通过telnet连接,所以我知道它的功能),但我的客户端似乎无法建立连接。我觉得这与我在serverAddr结构中填充sockaddr_的方式有关。
有人能帮忙吗?谢谢您。
int clientSocket;
char hostname[256];
struct sockaddr_in serverAddr;
struct hostent *host;
socklen_t theirAddrSize;
gethostname(hostname, sizeof(hostname));
host = gethostbyname(hostname);
memset(&serverAddr, 0, sizeof(serverAddr));
serverAddr.sin_family = AF_INET;
serverAddr.sin_addr.s_addr = inet_addr( host->h_name );
serverAddr.sin_port = htons( 30000 );
if ( clientSocket = socket( AF_INET, SOCK_STREAM , 0 ) == -1) {
cerr << "socket failed ; exiting..." << endl;
exit(1);
}
if ( connect( clientSocket , (struct sockaddr *) &serverAddr , sizeof(serverAddr) ) == -1 ) {
cerr << "connect failed ; exiting..." << endl;
exit(1);
}
连接总是返回-1。
最佳答案
使用inet_addr(host->h_name)
,而不是host->h_addr_list[0]
。