c-在inet_pton中使用什么地址



我是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解析的地址应该是什么?

首先给自己一些可以在本地连接的东西。例如,在单独的终端中运行程序之前,请尝试nc -v -l 13在端口13上运行netcat侦听。对不起,我没有足够的代表只发表评论。

使用您的本地机器Ip地址。或者使用默认的localhost ip地址:127.0。0.1。这个地址127.0。0.1是IPv4的标准地址。

相关内容

  • 没有找到相关文章

最新更新