《UNIX网络编程》源码编译

本书源码下载地址

浏览器下载

《UNIX网络编程》源码地址

wget

wget http://www.unpbook.com/unpv13e.tar.gz

开始编译

cd unpv13e/

按照README的指引进行

./configure    # try to figure out all implementation differences

cd lib         # build the basic library that all programs need
make           # use "gmake" everywhere on BSD/OS systems

cd ../libfree  # continue building the basic library
make

size_t未定义问题

注意,在编译libfree时,可能会出现编译错误

CentOS:

inet_ntop.c: In function ‘inet_ntop’:
inet_ntop.c:60:9: error: argument ‘size’ doesn’t match prototype
  size_t size;

MacOS:

inet_ntop.c:56:1: error: conflicting types for 'inet_ntop'
inet_ntop(af, src, dst, size)
^
/usr/include/arpa/inet.h:77:13: note: previous declaration is here
const char      *inet_ntop(int, const void *, char *, socklen_t);
                 ^

解决方法:

vim inet_ntop.c

把61行的size_t size改成socklen_t size后重新编一下

运行示例程序

试着编译运行一下第一章的获取服务器时间的程序

cd ../intro    # build and test a basic client program
make daytimetcpcli
./daytimetcpcli 127.0.0.1

Connection refused错误

这里可能会报错:

connect error: Connection refused

再开个窗口,编译运行一下同一个目录里的服务器程序

make daytimetcpsrv
sudo ./daytimetcpsrv

然后在另外的会话运行一下刚刚的客户端程序

./daytimetcpcli 127.0.0.1
Thu Aug  2 13:20:53 2018

发现正常运行

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java后端技术栈

使用Jenkins配置SpringBoot的自动化构建

http://blog.csdn.net/xlgen157387/article/details/50353317

1252
来自专栏我与狸奴不出门

基于CentOS搭建微信小程序--响应错误502

在腾讯云开发者实验室的搭建微信小程序中  ,遇到了在完成实验二会话部署失败后,实验一http访问测试也显示失败并且表示响应错误-错误码:502。(域名是可以正常...

3053
来自专栏FreeBuf

ASWCrypter:该工具生成的Payload可以绕过目前所有的反病毒产品

今天给大家介绍的是一款名叫ASWCrypter的Bash&Python脚本,该工具所生成的Payload可以绕过目前所有的反病毒产品。

862
来自专栏WindCoder

WIN7网络和共享中心显示未知但可以上网解决方式

今天在试一个《骑马与砍杀》的游戏相关问题的解决方法时,用了cmd命令中dll相关命令,没想到游戏问题没解决,还多了个“网络和共享中心显示未知”,右下角网络那成了...

2.2K1
来自专栏任浩强的运维生涯

Jenkins的初级应用(1)-Publish Over SSH

    作为Jenkins最基本的应用也是重要的一环就是可以把文件传到服务器上面,或者在服务器上面远程执行命令。一个可在在远程分发了文件之后就控制远程服务器的操...

830
来自专栏大魏分享(微信公众号:david-share)

详细描述微服务架构模式 | 微服务系列第三篇

虽然微服务通常是单独部署的,但大多数企业级微服务架构要求服务彼此交互以及与其他外部服务交互。 使用进程间通信(IPC)机制实现该通信。 根据应用程序的要求,微服...

1002
来自专栏决胜机器学习

消息队列(一) MySQL实现消息队列

消息队列(一)MySQL实现消息队列 (原创内容,转载请注明来源,谢谢) 一、概述 消息队列(MessageQueue,通常简称MQ)是一种进程间通信或同一进...

8803
来自专栏知晓程序

开发 | 一篇文章,带你从 0 到 1 开发小程序插件

1373
来自专栏一“技”之长

获取iOS应用的URL Schemes 原

3、打开iTunes,查看应用程序,选中相应的应用程序点击右键,选择在Finder中显示,然后解压ipa文件,得到一个文件夹。

1003
来自专栏三木的博客

基于web技术的操作系统安装器的设计

? 什么是基于web技术的安装器(web-based installer)? 传统的Linux操作系统安装需要启动一个LiveOS,然后在LiveOS中运行一...

2305

扫码关注云+社区

领取腾讯云代金券