vi能用后,我就把我的unix网络编程第1卷翻出来了。书发黄了...
书翻到第4页,有一个取时间的例子,就拿它开发,写复习的第一个例子。
1#include <stdio.h>
2#include <sys/socket.h>
3#include <sys/types.h>
4#include <netinet/in.h>
5#include <arpa/inet.h>
6#include <string.h>
7#define BUFFER_SIZE 1024
8typedef struct sockaddr SA;
9void printarg(int argc, char * argv[])
10{
11 int i;
12 for(i = 0; i < argc; i++)
13 {
14 printf("arg[%d]=%s\n",i,argv[i]);
15 }
16}
17void test(int argc, char * argv[])
18{
19 int sockfd,n;
20 char recvline[BUFFER_SIZE+1];
21 struct sockaddr_in servaddr;
22 if( argc != 2 )
23 {
24 printf("usage: a.out <IPaddress> \n");
25 return;
26 }
27 sockfd = socket(AF_INET, SOCK_STREAM, 0);
28 if( sockfd < 0 )
29 {
30 printf("socket errro\n");
31 return;
32 }
33 memset(recvline,0,sizeof(recvline));
34 memset(&servaddr,0,sizeof(servaddr));
35 servaddr.sin_family = AF_INET;
36 servaddr.sin_port = htons(13);
37 if( inet_pton(AF_INET,argv[1],&servaddr.sin_addr) <= 0 )
38 {
39 printf("inet_pton error %s", argv[1]);
40 return;
41 }
42 if( connect(sockfd,(SA *)&servaddr,sizeof(servaddr)) < 0 )
43 {
44 printf("connect error");
45 return;
46 }
47 while( (n = read(sockfd,recvline,BUFFER_SIZE) ) > 0)
48 {
49 recvline[n] = 0;
50 printf("recived: %s",recvline);
51 }
52 if( n < 0 )
53 {
54 printf("read error");
55 return;
56 }
57}
58int main(int argc, char * argv[])
59{
60 printarg(argc,argv);
61 test(argc,argv);
62
63 return 0;
64}
65
66
然后输入命令:gcc gettime.c -o a
一时间找不到时间,想起XP的一个internet时间同步配置,找到一个可以用的time.nist.gov
用ping命令得到其IP地址为192.43.244.18
然后运行例子:./a 192.43.244.18
运行结果如下图: