對於剛剛接觸網絡的人來講,《UNIX網絡編程》中第一個例子(daytimetcpcli)可能就測試不經過。也許你試着繼續向後讀來,本身寫一個服務程序來解決這個問題,可是daytime服務也是標準服務的一個例子。你也能夠對公網中的daytime服務器進行鏈接測試。linux
下面先給出源代碼,而後介紹如何查找daytime服務器。編程
代碼以下:windows
#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);
if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
err_quit("inet_pton error for %s", argv[1]);
if (connect(sockfd, (struct sockaddr*)&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");
}
if (n < 0)
err_sys("read error");
return 0;
}
能夠在本身的機器上安裝daytime服務,不過楓竹夢沒有成功。服務器
下面介紹如何查看有daytime服務的服務器。經過google搜索來的一些daytime服務器,不是鏈接超時,就是拒絕服務。因爲電腦都會有本身校準時間的功能,推測應該是鏈接遠程的daytime服務。以下網址能夠進行測試:markdown
因爲上面的程序不能本身的解析域名的地址,全部手動來處理。使用dig命令來解析域名。網絡
$ ./daytimetcpcli 206.168.112.96
connect error: Connection timed out
$ dig time.nist.gov +short
ntp1.glb.nist.gov.
128.138.141.172
$ ./daytimetcpcli 128.138.141.172
57308 15-10-13 08:34:28 20 0 0 942.1 UTC(NIST) *
$
如上的測試成功了,能夠繼續學習了。socket
更多請參考網絡編程。tcp