我的服務器已啓動並運行(通過telnet連接,因此我知道它的功能),但我的客戶似乎無法建立連接。我有一種感覺,它與我填寫sockaddr_in serverAddr結構的方式有關。客戶端在使用套接字連接到服務器時遇到問題?
任何人都可以請幫忙嗎?謝謝。
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將返回正確的IP地址? –
什麼是主機 - > h_name?顯示對套接字和連接的呼叫。請提供更多的代碼。 – jmucchiello
主機是hostent類型的,h_name返回包含本地ip的字符串。 – VeePee