unix网络编程 时间服务端和客户端设计

linuxmint 14 网络编程环境的搭建方法:

一、下载源代码,然后解压 点此下载unpv13e.tar.gz

二、找到文件夹了的README文件,按照说明的方法执行命令。

三、完成操作之后,找到libunp.a

四、复制这个静态库libunp.a到/usr/lib/和/usr/lib64/中

五、在目录中找到unp.h和config.h,复制到/usr/include中

 将unp.h中#include "../config.h"修改为#include "config.h" 

这样环境就搭建好了,但是以后编译的时候在gcc的最后加上-lunp导入静态库就可以了。下面我们就来看这些例子:

第一种:TCP迭代服务器程序:迭代服务器总是在完全处理了一个客户的请求后才响应下一个客户的请求。

客户端程序:daytimetcpcli.c

[html]  view plain copy
  1. #include    "unp.h"  
  2.   
  3. int  
  4. main(int argc, char **argv)  
  5. {  
  6.     int                 sockfd, n;  
  7.     char                recvline[MAXLINE + 1];  
  8.     struct sockaddr_in  servaddr;  
  9.   
  10.     if (argc != 2)  
  11.         err_quit("usage: a.out <IPaddress>");  
  12.   
  13.     if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)  
  14.         err_sys("socket error");  
  15.   
  16.     bzero(&servaddr, sizeof(servaddr));  
  17.     servaddr.sin_family = AF_INET;  
  18.     servaddr.sin_port   = htons(13);      
  19.     if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)  
  20.         err_quit("inet_pton error for %s", argv[1]);  
  21.   
  22.     if (connect(sockfd, (SA *) &servaddr, sizeof(servaddr)) < 0)  
  23.         err_sys("connect error");  
  24.   
  25.     while ( (n = read(sockfd, recvline, MAXLINE)) > 0) {  
  26.         recvline[n] = 0;      
  27.         if (fputs(recvline, stdout) == EOF)  
  28.             err_sys("fputs error");  
  29.     }  
  30.     if (n < 0)  
  31.         err_sys("read error");  
  32.   
  33.     exit(0);  
  34. }  

服务器程序:daytimetcpsrv.c

[html]  view plain copy
  1. #include    "unp.h"  
  2. #include    <time.h>  
  3.   
  4. int  
  5. main(int argc, char **argv)  
  6. {  
  7.     int                 listenfd, connfd;  
  8.     struct sockaddr_in  servaddr;  
  9.     char                buff[MAXLINE];  
  10.     time_t              ticks;  
  11.   
  12.     listenfd = Socket(AF_INET, SOCK_STREAM, 0);  
  13.   
  14.     bzero(&servaddr, sizeof(servaddr));  
  15.     servaddr.sin_family      = AF_INET;  
  16.     servaddr.sin_addr.s_addr = htonl(INADDR_ANY);  
  17.     servaddr.sin_port        = htons(13);     
  18.   
  19.     Bind(listenfd, (SA *) &servaddr, sizeof(servaddr));  
  20.   
  21.     Listen(listenfd, LISTENQ);  
  22.   
  23.     for ( ; ; ) {  
  24.         connfd = Accept(listenfd, (SA *) NULL, NULL);  
  25.   
  26.         ticks = time(NULL);  
  27.         snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks));  
  28.         Write(connfd, buff, strlen(buff));  
  29.   
  30.         Close(connfd);  
  31.     }  
  32. }  
生成了server和client程序,运行server和client程序如下图,顺利成功
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值