![](/img/trans.png)
[英]Advanced Programming in the Unix Environment 3rd Edn, §7.8, the default return value for undeclared functions is int?
[英]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
,它給出一個信息“連接錯誤:連接被拒絕”,我該怎么辦?
隨附此示例代碼:
#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.