Warm tip: This article is reproduced from serverfault.com, please click

c-inet_pton中使用什么地址?

(c - what address to use in inet_pton?)

发布于 2020-11-29 00:28:52

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

#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

Questioner
milanHrabos
Viewed
0
445k 2020-11-30 02:35:22

首先给自己一些与本地联系的机会。nc -v -l 13例如,在单独的终端上运行程序之前,请尝试在端口13上运行netcat侦听。抱歉,我没有足够的代表只能发表评论。