我有一個啓動套接字連接的函數。我正在嘗試使用名稱的服務器讓我們說XP。套接字()工作正常。但是當連接時,我收到一個錯誤。我試圖獲得該服務器的IP,我得到了一些隨機IP。我將參數傳遞給了連接API。我將這些結果打印在日誌文件中。我認爲錯誤在於connect()。我正在研究Linux Ubuntu。這是我的SocketInit()程序。我無法得到這個錯誤。連接在我的套接字編程函數中失敗C
我將SocketInit函數調用爲 SocketInit(argv [2]); argv [2]有我的服務器名稱。
short SocketInit(char *xp)
{
if ((local_socket = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
printf("socket creation is unsuccessful check in SocketInit() \n");
sprintf(log_msg, "create socket descriptor error = %d", errno);
LogMsg('E', log_msg);
return(-1);
}
else
{
printf("socket connection is success\n");
}
pos_socket.sin_family = AF_INET;
pos_socket.sin_port = htons(port_no);
pos_socket.sin_addr.s_addr = inet_addr(xp);
if (connect(local_socket, (struct sockaddr *) &pos_socket, sizeof(pos_socket)) < 0) {
sprintf(log_msg, "connect on socket error=%d", errno);
printf("socket connect api is unsuccessful check in SocketInit() \n");
LogMsg('E', log_msg);
return(-1);
}
else{
printf("connect is successful\n");
return 0;
}
}
如何連接到服務器。我如何將地址傳遞給pos_socket.sin_addr.s_addr?有時候我會連接錯誤110和111.但是我仍然無法連接。
'xp'指向的實際字符串是什麼?它是一個IP地址嗎?需要解析爲IP地址的主機名?你得到的錯誤是什麼?請使用['strerror'](http://man7.org/linux/man-pages/man3/strerror.3.html)從'errno'獲得可打印的錯誤信息(errno的值可能因系統而異,並且記住,在使用可能設置它的任何其他函數之前,您必須檢查「errno」的值)。 –
使用'perror'來了解它是什麼錯誤。 –
是的xp是一個服務器,它有一個IP地址10.254.xx.xx.我試圖在我的實際程序中使用gethostbyname打印我的服務器xp的ip地址。它顯示完全相同的IP。 –