redhat@redhat-virtual-machine:~/桌面/unpv13e$ ./configure
redhat@redhat-virtual-machine:~/桌面/unpv13e$ cd ./lib
redhat@redhat-virtual-machine:~/桌面/unpv13e/lib$ make
redhat@redhat-virtual-machine:~/桌面/unpv13e$ cd ./libfree
redhat@redhat-virtual-machine:~/桌面/unpv13e/libfree$ make
// 如果报错如下,则需要在当前目录下打开inet_ntop.c文件
// 将第60行的size_t size修改为socklen_t size 然后保存
// 重新输入make后不报错即可
gcc -I../lib -g -O2 -D_REENTRANT -Wall -c -o inet_ntop.o inet_ntop.c
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,
^
make: *** [inet_ntop.o] Error 1
redhat@redhat-virtual-machine:~/桌面/unpv13e/libfree$ cd ../libgai
redhat@redhat-virtual-machine:~/桌面/unpv13e/libgai$ make
// 以下的warning不用理会
/usr/include/arpa/inet.h: In function ‘inet_ntop’:
inet_ntop.c:152:23: warning: ‘best.len’ may be used uninitialized in this function [-Wmaybe-uninitialized]
if (best.base == -1 || cur.len > best.len)
^
inet_ntop.c:123:28: note: ‘best.len’ was declared here
struct { int base, len; } best, cur;
^
gcc -I../lib -g -O2 -D_REENTRANT -Wall -c -o inet_pton.o inet_pton.c
ar rv ../libunp.a in_cksum.o inet_ntop.o inet_pton.o
a - in_cksum.o
a - inet_ntop.o
a - inet_pton.o
ranlib ../libunp.a
// 用root权限将以上编译生成的libunp.a 文件复制到/usr/lib目录中
redhat@redhat-virtual-machine:~/桌面/unpv13e/libgai$ cd ..
redhat@redhat-virtual-machine:~/桌面/unpv13e$ sudo cp libunp.a /usr/lib
[sudo] redhat 的密码:
// 打开unp.h文件将其中的#include "../config.h" 改成 #include "config.h"
redhat@redhat-virtual-machine:~/桌面/unpv13e$ vim lib/unp.h
// 进入intro目录编译客户端文件并用root权限运行
redhat@redhat-virtual-machine:~/桌面/unpv13e$ cd intro/
redhat@redhat-virtual-machine:~/桌面/unpv13e/intro$ make daytimetcpcli
redhat@redhat-virtual-machine:~/桌面/unpv13e/intro$ sudo ./daytimetcpcli 127.0.0.1
// 错误提示无法连接
connect error: Connection refused
// 我们先打开服务器
redhat@redhat-virtual-machine:~/桌面/unpv13e/intro$ make daytimetcpsrv
redhat@redhat-virtual-machine:~/桌面/unpv13e/intro$ sudo ./daytimetcpsrv
// 然后再打开另一个终端,在那里再运行客户端即可
redhat@redhat-virtual-machine:~/桌面/unpv13e/intro$ sudo ./daytimetcpcli 127.0.0.1
[sudo] redhat 的密码:
Mon Dec 25 21:00:36 2017
《UNIX网络编程 卷1:套接字联网API》第一个例子运行时环境搭建
最新推荐文章于 2022-03-23 17:08:44 发布