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
- #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, (SA *) &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");
- exit(0);
- }
服务器程序:daytimetcpsrv.c
- #include "unp.h"
- #include <time.h>
- int
- main(int argc, char **argv)
- {
- int listenfd, connfd;
- struct sockaddr_in servaddr;
- char buff[MAXLINE];
- time_t ticks;
- listenfd = Socket(AF_INET, SOCK_STREAM, 0);
- bzero(&servaddr, sizeof(servaddr));
- servaddr.sin_family = AF_INET;
- servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
- servaddr.sin_port = htons(13);
- Bind(listenfd, (SA *) &servaddr, sizeof(servaddr));
- Listen(listenfd, LISTENQ);
- for ( ; ; ) {
- connfd = Accept(listenfd, (SA *) NULL, NULL);
- ticks = time(NULL);
- snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks));
- Write(connfd, buff, strlen(buff));
- Close(connfd);
- }
- }
![](https://i-blog.csdnimg.cn/blog_migrate/f406df2e7d05435e9b105953daf9ac4c.png)
生成了server和client程序,运行server和client程序如下图,顺利成功
:
![](https://i-blog.csdnimg.cn/blog_migrate/c6ee7ba2139ffa16fe07f29d885354a0.png)