我运行 UNIX Network Programming Volume 1(3rd) 但是如何配置网络环境?

use*_*988 0 c linux networking

我只是运行“1.2 A Simple Daytime Client”示例。但是在ubuntu下,如何配置网络环境?

示例用法是“solaris % a.out 206.168.112.96”,这里我应该如何更改IP。我通过局域网连接到互联网。我通过 ifconfig 显示的 ip 是

inet address: 192.168.0.109,但是在这里,当我输入时a.out 192.168.0.109,它给出了“连接错误:连接被拒绝”的信息,我该怎么办?

附上这个示例代码:

介绍/daytimetcpcli.c

  #include  "unp.h"

  int
  main(int argc, char **argv)
  {
      int     sockfd, n;
      char    recvline[MAXLINE + 1];
      struct sockaddr_in servaddr;

      if (argc != 2)
          err_quit("usage: a.out <IPaddress>");

     if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
         err_sys("socket error");

     bzero(&servaddr, sizeof(servaddr));
     servaddr.sin_family = AF_INET;
     servaddr.sin_port = htons(13);  /* daytime server */
     if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
         err_quit("inet_pton error for %s", argv[1]);

     if (connect(sockfd, (SA *) &servaddr, sizeof(servaddr)) < 0)
         err_sys("connect error");

     while ( (n = read(sockfd, recvline, MAXLINE)) > 0) {
         recvline[n] = 0;        /* null terminate */
         if (fputs(recvline, stdout) == EOF)
             err_sys("fputs error");
     }
     if (n < 0)
         err_sys("read error");

     exit(0);
 }
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供任何建议,我是网络编程的新手。

我只是作为这里提供的一个答案运行:

root@ubuntu:/home/jack/dev/practice# ./daytimetcpcli 192.168.0.109
connect error: Connection refused
root@ubuntu:/home/jack/dev/practice# 
Run Code Online (Sandbox Code Playgroud)

它仍然提供连接错误信息:

我使用 netstat 来检查信息。

  jack@ubuntu:~$ sudo netstat -tlp

  activate Internet connection (just server)
  Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
  tcp        0      0 localhost:5038          *:*                     LISTEN      1625/asterisk   
  tcp        0      0 *:cisco-sccp            *:*                     LISTEN      1625/asterisk   
  tcp        0      0 *:http                  *:*                     LISTEN      1679/apache2    
  tcp        0      0 localhost:domain        *:*                     LISTEN      1405/dnsmasq    
  tcp        0      0 localhost:ipp           *:*                     LISTEN      933/cupsd       
  tcp        0      0 localhost:postgresql    *:*                     LISTEN      1076/postgres   
  tcp        0      0 localhost:5946          *:*                     LISTEN      983/teamviewerd 
  tcp        0      0 *:sip                   *:*                     LISTEN      1625/asterisk   
  tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN      933/cupsd       
Run Code Online (Sandbox Code Playgroud)

ray*_*080 5

您应该daytimetcpsrv首先在本地运行,它作为本地时间服务器提供。然后您可以运行daytimetcpcli 127.0.0.1以获取当前时间。