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
8
typedef struct sockaddr SA;
9
void printarg(int argc, char * argv[])
10![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
11
int i;
12
for(i = 0; i < argc; i++)
13![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
14
printf("arg[%d]=%s\n",i,argv[i]);
15
}
16
}
17
void test(int argc, char * argv[])
18![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
19
int sockfd,n;
20
char recvline[BUFFER_SIZE+1];
21
struct sockaddr_in servaddr;
22
if( argc != 2 )
23![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
24
printf("usage: a.out <IPaddress> \n");
25
return;
26
}
27
sockfd = socket(AF_INET, SOCK_STREAM, 0);
28
if( sockfd < 0 )
29![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
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![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
39
printf("inet_pton error %s", argv[1]);
40
return;
41
}
42
if( connect(sockfd,(SA *)&servaddr,sizeof(servaddr)) < 0 )
43![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
44
printf("connect error");
45
return;
46
}
47
while( (n = read(sockfd,recvline,BUFFER_SIZE) ) > 0)
48![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
49
recvline[n] = 0;
50
printf("recived: %s",recvline);
51
}
52
if( n < 0 )
53![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
54
printf("read error");
55
return;
56
}
57
}
58
int main(int argc, char * argv[])
59![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
{
60
printarg(argc,argv);
61
test(argc,argv);
62
63
return 0;
64
}
65![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
66![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
然后输入命令:gcc gettime.c -o a
一时间找不到时间,想起XP的一个internet时间同步配置,找到一个可以用的time.nist.gov
用ping命令得到其IP地址为192.43.244.18
然后运行例子:./a 192.43.244.18
运行结果如下图: