簡體   English   中英

我運行UNIX網絡編程卷1(3rd),但如何配置網絡環境?

[英]I run UNIX Network Programming Volume 1(3rd) but how to config the networking environment?

我只是運行“ 1.2 A Simple Daytime Client”示例。 但是在ubuntu下,如何配置網絡環境?

樣本用法為“ solaris%a.out 206.168.112.96”,在這里我應該如何更改IP。 我通過LAN連接到Internet。 我的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);
 }

任何人提供任何建議,我都是網絡編程新手。

我只是在這里提供一個答案:

root@ubuntu:/home/jack/dev/practice# ./daytimetcpcli 192.168.0.109
connect error: Connection refused
root@ubuntu:/home/jack/dev/practice# 

它仍然給出連接錯誤信息:

我使用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       

當前版本的ubuntu默認沒有安裝daytime服務器,但是很容易做到。

  • 如果尚未安裝xinetd ,請使用sudo apt-get install xinetd
  • 編輯/etc/xinetd.d/daytime更改disable = yes disable = no

service daytime
{
    disable         = no
    type            = INTERNAL
    id              = daytime-stream
    socket_type     = stream
    protocol        = tcp
    user            = root
    wait            = no
}
  • 輸入sudo service xinetd reload使其讀取更改的配置文件
  • 輸入netstat -a -t | grep daytime netstat -a -t | grep daytime驗證白天服務器是否正在運行,然后嘗試再次運行客戶端程序

您應該首先在本地運行daytimetcpsrv ,它作為本地時間服務器提供。 然后,您可以運行daytimetcpcli 127.0.0.1以獲取當前時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM