unix网络编程环境搭建
unix网络编程环境搭建
1.点击下载源代码
可以通过下列官网中的源代码目录下载最新代码:
http://www.unpbook.com/src.html
2.解压文件
- tar -xzvf upv13e.tar.gz
3.上传至阿里云
本人本地已经配置好,这次实验是将环境搭建至云服务器中。
- scp -r unpv13e root@120.76.140.119:/root/program/unp
- // -r 上传文件夹
4.编译文件
- cd unpv13e
- chmod a+x configure //非root用户需要赋予可执行能力
- ./configure
- cd lib //进入lib目录并且编译 此为编译库文件
- make
- cd libfree //进入libfree目录并且编译
- make
libfree编译会出现下列问题:
- inet_ntop.c: In function ‘inet_ntop’:
- inet_ntop.c:60:9: error: argument ‘size’ doesn’t match prototype
- size_t size;
- ^
- In file included from inet_ntop.c:27:0:
- /usr/include/arpa/inet.h:64:20: error: prototype declaration
- extern const char *inet_ntop (int __af, const void *__restrict __cp,
- ^
- <builtin>: recipe for target 'inet_ntop.o' failed
- 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中加入如下代码即可:(插入到所有头文件之后)
- #define size_t socklen_t
此时make就能成功。
5.测试introduction实例
1.使用make命令进行测试
- cd intro
- make daytimetcpsrv
- make daytimetcpcli
- //测试结果
- ./daytimetcpsrv
- ./daytimetcpcli 127.0.0.1
- Sat May 6 21:35:10 2017
2.使用gcc编译进行测试
- //拷贝libunp.a到库文件夹目录/usr/lib,便于使用-lunp命令
- cp libunp.a /usr/lib
- //修改头文件unp.h,并将unp.h和config.h拷贝到/usr/include
- cp /lib/unp.h /usr/include
- cp config.h /usr/include
- //由于config.h与unp.h在同一个目录夹下
- vim /usr/include/unp.h
- //修改include "../config.h"成“config.h"
编译测试代码
- cd ./intro
- gcc daytimetcpcli.c -o daytimetcpcli -lunp
- gcc daytimetcpsrv.c -o daytimetcpsrv -lunp
- ./daytimetcpsrv
- ./daytimetcpcli 127.0.0.1
- Sat May 6 21:35:10 2017
-lworld表示在上面的lib的路径中寻找libworld.so动态库文件(如果gcc编译选项中加入了“-static”表示寻找libworld.a静态库文件)
6.如果需要关闭服务器程序,需要使用下面方法
- netstat -anp |grep daytimetcpsrv //具体含义使用--help查看,找到pidnum
- kill -9 pidnum
unix网络编程环境搭建的更多相关文章
- UNIX网络编程 环境搭建
配置好动态链接库或者静态链接库 1,下载UNIX网络编程书的头文件及示例源码unpv13e 2 按照readme来编译 Execute the following from the src/ d ...
- 记录一次配置unix网络编程环境的过程和遇到的问题
记录一次搭建unix网络编程环境过程中遇到的问题和总结 计算机环境虚拟机 linuxmint-18-xfce-64bit 1.打开unix网络编程.iso 把目录下的文件复制到某一目录,修改权限,可命 ...
- ubuntu14.04下unix网络编程环境的配置
建议 unpv13e/README看一下,忽略一下内容 ===================================================================== 操作 ...
- unix网络编程环境配置程序运行
1 查看ubuntu版本 cat /etc/issue 2 查看版本 cat /proc/version 3 下载 你可以通过其他方式下载 这里下载好了 文件名为unpv13e 4 开始配置 (1)c ...
- ubuntu14.04下unix网络编程 环境的配置
在ubuntu下 首先:在unpv13e文件加下 ./configure cd lib make cd ../libfree make cd ../liggai make cd .. vim lib/ ...
- 【转】Unix NetWork Programming——环境搭建(解决unp.h等源码编译问题)
下面开始用简单但典型的客户端和服务器端程序说明如何进行网络编程.这一小节讲的是客户端,一个用来连接并读取服务器发送来的时间的客户端. 这里涉及到了编写代码,因此要 搭建unix网络编程环境 unix系 ...
- 【UNIX网络编程第三版】阅读笔记(一):代码环境搭建
粗略的阅读过<TCP/IP详解>和<计算机网络(第五版)>后,开始啃这本<UNIX网络编程卷一:套接字联网API>,目前linux下的编程不算太了解,在阅读的过程中 ...
- 《UNIX网络编程 卷1》之"学习环境搭建"(CentOS 7)
<UNIX网络编程 卷1>的源码可以从www.unpbook.com下载得到.解压之后的目录为unpv13e. 详细步骤 编译 进入unpv13e目录,按如下步骤编译: ./configu ...
- Unix NetWork Programming(unix环境编程)——环境搭建(解决unp.h等源码编译问题)
此配置实例亲测成功,共勉,有问题大家留言. 环境:VMware 10 + unbuntu 14.04 为了unix进行网络编程,编程第一个unix程序时遇到的问题,不能包含unp.h文件,这个感觉和a ...
随机推荐
- Javascript学习--时钟
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- mybatis一级缓存二级缓存
一级缓存 Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言.所以在参数和SQL完全一样的情况下,我们使用同一个SqlSess ...
- sersync+rsync同步
(一)目标服务器(rsync):10.60.50.192 1.安装rsync yum -y install rsync 2.创建rsyncd.conf配置文件 vi /etc/rsyncd.conf ...
- 【转】高斯-克吕格投影与UTM投影异同
高斯-克吕格(Gauss-Kruger)投影与UTM投影(Universal Transverse Mercator,通用横轴墨卡托投影)都是横轴墨卡托投影的变种,目前一些国外的软件或国外进口仪器的配 ...
- 字段的参数 -- Django从入门到精通系列教程
该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...
- PowerMockito使用详解
一.PowerMock概述 现如今比较流行的Mock工具如jMock,EasyMock,Mockito等都有一个共同的缺点:不能mock静态.final.私有方法等.而PowerMock能够完美的弥补 ...
- Python字典(dict)使用技巧
字典dict是Python中使用频率非常高的数据结构,关于它的使用,也有许多的小技巧,掌握这些小技巧会让你高效地的使用dict,也会让你的代码更简洁. 1.默认值 假设name_for_userid存 ...
- python3中,os.path模块下常用的用法总结
abspath basename dirname exists getatime getctime getmtime getsize isabs isdir isfile islink ismount ...
- 《Thinking in Java》学习笔记(四)
1.Java中的闭包与回调 闭包(Closure)是一种能被调用的对象,它保存了创建它的作用域的信息.JAVA并不能显式地支持闭包,但是在JAVA中,闭包可以通过“接口+内部类”来实现,因为对于非静态 ...
- 2018/1/19 Netty学习笔记(一)
这段时间学了好多好多东西,不过更多是细节和思想上的,比如分布式事物,二次提交,改善代码质量,还有一些看了一些源码什么的; 记录一下真正的技术学习,关于Netty的学习过程; 首先说Netty之前先说一 ...