我有一个启动套接字连接的函数。我正在尝试使用名称的服务器让我们说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。 –