【发布时间】:2013-12-31 01:49:21
【问题描述】:
我只是运行“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
【问题讨论】:
-
仅供参考,除非您确实需要引用特定行,否则不要在发布的代码中添加行号。即使这样,评论和箭头也应该可以解决问题。这些数字使任何人都不太可能尝试您的代码。 (不是这篇文章的问题,而是未来的问题。)
-
你在客户端之前启动了服务器吗?
-
检查是否可以使用
netcat连接到它。如果您的连接也被拒绝,则说明您的日间服务器没有运行,或者您的防火墙阻止了它。 -
这个示例代码是在大多数主机上运行“白天”服务器是标准做法时编写的。所以它期望该服务器正在运行。但是现在很少这样做了。所以你可能需要安装 linux 的
netkit或netkit-timed才能让它工作。 -
与其运行您自己的白天服务器,这里有一个公共服务器列表,您可以将您的客户指向:tf.nist.gov/tf-cgi/servers.cgi
标签: c linux networking