使用套接字unix连接到远程服务器

时间:2015-07-13 20:23:41

标签: sockets unix

在unix中,我想让客户端程序连接到在不同机器上运行的服务器。为此,我需要通过键盘输入服务器的IP地址,然后在客户端的connect()系统调用中传递该IP地址。我尝试读作一个字符串,然后传递它。但它没有用。是否有任何特定的方式来传递IP地址?

1 个答案:

答案 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;
}