在unix中,我想让客户端程序连接到在不同机器上运行的服务器。为此,我需要通过键盘输入服务器的IP地址,然后在客户端的connect()系统调用中传递该IP地址。我尝试读作一个字符串,然后传递它。但它没有用。是否有任何特定的方式来传递IP地址?
答案 0 :(得分:0)
假设IPv4,您正在寻找的函数是inet_addr
,它将IPv4地址的字符串表示转换为可以传递到各种套接字函数的数值:
int get_connection(const char *ip, int port)
{
int sock;
struct sockaddr_in sin;
bzero(&sin,sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = inet_addr(ip);
sin.sin_port = htons(port);
if ((sock=socket(AF_INET,SOCK_STREAM,0))==-1) {
perror("Error creating socket");
return -1;
}
if (connect(sock,(struct sockaddr *)&sin,sizeof(sin))==-1) {
perror("Couldn't connect");
close(sock);
return -1;
}
return sock;
}