unix网络编程环境搭建

网络编程
环境

1.点击下载源代码

可以通过下列官网中的源代码目录下载最新代码:

http://www.unpbook.com/src.html

2.解压文件

  1. tar -xzvf upv13e.tar.gz 

3.上传至阿里云

本人本地已经配置好,这次实验是将环境搭建至云服务器中。

  1. scp -r unpv13e root@120.76.140.119:/root/program/unp 

  2. // -r 上传文件夹 

4.编译文件

  1. cd unpv13e 

  2. chmod a+x configure //非root用户需要赋予可执行能力 

  3. ./configure 

  4. cd lib //进入lib目录并且编译 此为编译库文件  

  5. make 

  6. cd libfree //进入libfree目录并且编译 

  7. make 

libfree编译会出现下列问题:

  1. inet_ntop.c: In function ‘inet_ntop’: 

  2. inet_ntop.c:60:9: error: argument ‘size’ doesn’t match prototype 

  3. size_t size; 



  4. In file included from inet_ntop.c:27:0: 

  5. /usr/include/arpa/inet.h:64:20: error: prototype declaration 

  6. extern const char *inet_ntop (int __af, const void *__restrict __cp, 



  7. <builtin>: recipe for target 'inet_ntop.o' failed 

  8. make: *** [inet_ntop.o] Error 1 

错误提示inet_ntop.c中60行声明与原型申明/usr/include/arpa/inet.h不匹配。(#include一般所在文件都在/usr/include中)

经查验,最后一个参数,在inet.h中定义socklen_t,而inet_ntop.c中定义为size_t。在inet_ntop.c中加入如下代码即可:(插入到所有头文件之后)

  1. #define size_t socklen_t 

此时make就能成功。

5.测试introduction实例

1.使用make命令进行测试

  1. cd intro 

  2. make daytimetcpsrv 

  3. make daytimetcpcli 

  4. //测试结果 

  5. ./daytimetcpsrv 

  6. ./daytimetcpcli 127.0.0.1 

  7. Sat May 6 21:35:10 2017 

2.使用gcc编译进行测试

  1. //拷贝libunp.a到库文件夹目录/usr/lib,便于使用-lunp命令 

  2. cp libunp.a /usr/lib 

  3. //修改头文件unp.h,并将unp.h和config.h拷贝到/usr/include 

  4. cp /lib/unp.h /usr/include 

  5. cp config.h /usr/include 

  6. //由于config.h与unp.h在同一个目录夹下 

  7. vim /usr/include/unp.h 

  8. //修改include "../config.h"成“config.h" 

编译测试代码

  1. cd ./intro  

  2. gcc daytimetcpcli.c -o daytimetcpcli -lunp 

  3. gcc daytimetcpsrv.c -o daytimetcpsrv -lunp 

  4. ./daytimetcpsrv 

  5. ./daytimetcpcli 127.0.0.1 

  6. Sat May 6 21:35:10 2017 

-lworld表示在上面的lib的路径中寻找libworld.so动态库文件(如果gcc编译选项中加入了“-static”表示寻找libworld.a静态库文件)

6.如果需要关闭服务器程序,需要使用下面方法

  1. netstat -anp |grep daytimetcpsrv //具体含义使用--help查看,找到pidnum 

  2. kill -9 pidnum 

unix网络编程环境搭建的更多相关文章

  1. UNIX网络编程 环境搭建

    配置好动态链接库或者静态链接库 1,下载UNIX网络编程书的头文件及示例源码unpv13e 2    按照readme来编译 Execute the following from the src/ d ...

  2. 记录一次配置unix网络编程环境的过程和遇到的问题

    记录一次搭建unix网络编程环境过程中遇到的问题和总结 计算机环境虚拟机 linuxmint-18-xfce-64bit 1.打开unix网络编程.iso 把目录下的文件复制到某一目录,修改权限,可命 ...

  3. ubuntu14.04下unix网络编程环境的配置

    建议 unpv13e/README看一下,忽略一下内容 ===================================================================== 操作 ...

  4. unix网络编程环境配置程序运行

    1 查看ubuntu版本 cat /etc/issue 2 查看版本 cat /proc/version 3 下载 你可以通过其他方式下载 这里下载好了 文件名为unpv13e 4 开始配置 (1)c ...

  5. ubuntu14.04下unix网络编程 环境的配置

    在ubuntu下 首先:在unpv13e文件加下 ./configure cd lib make cd ../libfree make cd ../liggai make cd .. vim lib/ ...

  6. 【转】Unix NetWork Programming——环境搭建(解决unp.h等源码编译问题)

    下面开始用简单但典型的客户端和服务器端程序说明如何进行网络编程.这一小节讲的是客户端,一个用来连接并读取服务器发送来的时间的客户端. 这里涉及到了编写代码,因此要 搭建unix网络编程环境 unix系 ...

  7. 【UNIX网络编程第三版】阅读笔记(一):代码环境搭建

    粗略的阅读过<TCP/IP详解>和<计算机网络(第五版)>后,开始啃这本<UNIX网络编程卷一:套接字联网API>,目前linux下的编程不算太了解,在阅读的过程中 ...

  8. 《UNIX网络编程 卷1》之"学习环境搭建"(CentOS 7)

    <UNIX网络编程 卷1>的源码可以从www.unpbook.com下载得到.解压之后的目录为unpv13e. 详细步骤 编译 进入unpv13e目录,按如下步骤编译: ./configu ...

  9. Unix NetWork Programming(unix环境编程)——环境搭建(解决unp.h等源码编译问题)

    此配置实例亲测成功,共勉,有问题大家留言. 环境:VMware 10 + unbuntu 14.04 为了unix进行网络编程,编程第一个unix程序时遇到的问题,不能包含unp.h文件,这个感觉和a ...

随机推荐

  1. redux学习日志:关于异步action

    当我们在执行某个动作的时候,会直接dispatch(action),此时state会立即更新,但是如果这个动作是个异步的呢,我们要等结果出来了才能知道要更新什么样的state(比如ajax请求),那就 ...

  2. 2018/1/28 每日一学 单源最短路的SPFA算法以及其他三大最短路算法比较总结

    刚刚AC的pj普及组第四题就是一种单源最短路. 我们知道当一个图存在负权边时像Dijkstra等算法便无法实现: 而Bellman-Ford算法的复杂度又过高O(V*E),SPFA算法便派上用场了. ...

  3. MySql按日期进行统计

    1 数据库字段pk_time(Varchar) 当天的数据 SELECT * FROM 表 WHERE date(fk_time) = curdate(); 当月的数据 SELECT *FROM 表 ...

  4. mysql pdo数据库连接

    MYSQL $conn = @mysql_connect('localhost','root','root');//括号的里的分别代表主机.用户名.密码 mysql_select_db('test', ...

  5. Java - 二叉树递归与非递归

    树的定义具有递归特性,因此用递归来遍历比较符合特性,但是用非递归方式就比较麻烦,主要是递归和栈的转换. import java.util.Stack; /** * @author 李文浩 * @ver ...

  6. Jmeter之性能测试插件PerfMon Metrics Collector监听器,实时监听服务器资源(十四)

    Servers Performance Monitoring Introduction During a load test, it is important to know the health o ...

  7. jQuery应用操作之---表格

    示例: <table> <thread> <tr><th>姓名</th><th>性别</th><th>暂 ...

  8. python--关于赋值与深浅拷贝的认识

    作为一个自学python的小白,平时用到深浅拷贝的机会很少,因此对其也是一知半解.但是,作为一个立志成为后端工程狮的男人,眼里揉不了沙子,于是专门花时间补了补课,在此记录一下学习心得.    在讲深浅 ...

  9. iOS-沙盒目录

    ///沙盒路径 + (NSString *)pathDocument{ NSFileManager *fileManager = [[NSFileManager alloc]init]; NSStri ...

  10. ABP官方文档翻译 5.2 动态We API层

    动态Web APID层 创建动态Web API控制器 ForAll方法 重写ForAll ForMethods Http动词 WithVerb方法 HTTP特性 命名约定 API管理器 RemoteS ...