在 inet_pton 中使用什么地址?

what address to use in inet_pton?

我是 IP/TCP 的初学者,但正在阅读 Addison Wesley:UNIX 网络编程 第一卷,我有以下代码:

#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: main <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);
    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;
        if (fputs(recvline, stdout) == EOF)
        {
            err_sys("fputs error");
        }
    }
    exit(0);
}

现在从书中,他们运行它是

solaris % a.out 206.168.112.96

如果我查找我的地址:

user@Host:~/Desktop/bin/1$ ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 15419  bytes 1627065 (1.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15419  bytes 1627065 (1.6 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.5  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 2a00:1028:8d1b:f32a:8ddb:cc89:8404:e9dc  prefixlen 64  scopeid 0x0<global>
        inet6 2a00:1028:8d1b:f32a:c84a:2566:28f5:81e1  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::2954:989:452f:c90f  prefixlen 64  scopeid 0x20<link>
        ether 5c:3a:45:55:ae:b5  txqueuelen 1000  (Ethernet)
        RX packets 1095391  bytes 1521941184 (1.5 GB)
        RX errors 0  dropped 1  overruns 0  frame 0
        TX packets 392567  bytes 53028207 (53.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

我假设这是我的 IPv4 地址 10.0.0.5,所以如果我尝试 运行 上面的代码:

./a.out 10.0.0.5
connect error: Connection refused

我的连接被拒绝了。我使用的地址正确吗?,从书中,他们使用了以 206 开头的内容...我应该使用什么地址将被 inet_pton 解析?

首先给自己一些可以在当地联系的东西。尝试 nc -v -l 13 到 运行 netcat 侦听端口 13,例如,在 运行 在单独的终端中运行您的程序之前。抱歉,我没有足够的代表来发表评论。

使用您的本地计算机 IP 地址。 或使用默认的本地主机 IP 地址:127.0. 0.1。 这个地址 127.0. 0.1 是 IPv4 的标准地址。