Unix Network Programming 2nd Edtion Source Code 编译问题解决

按照README的指示走

#cd unpv12e
#cd lib
#make
gcc -g -O2 -D_REENTRANT -Wall -c -o connect_nonb.o connect_nonb.c
In file included from connect_nonb.c:1:
unp.h:114: redefinition of `struct in_pktinfo'
make: *** [connect_nonb.o] Error 1
这个错误的修正方法是注释掉该定义(从网上搜索来的,也不知道正确不正确,反正能通过)

cd ../libfree
make
inet_ntop.c:61: error: argument 'size' doesn't match prototype
/usr/include/arpa/inet.h:153: error: prototype declaration

inet_ntop.c第61行 size_t size ->改成 socklen_t size


#cd ../intro
#make
...
/root/unpv12e/intro/daytimetcpsrvv6.c:18: undefined reference to `ipv6addr_any'
daytimetcpsrvv6.o(.text+0x3d):/root/unpv12e/intro/daytimetcpsrvv6.c:18: undefined reference to `ipv6addr_any'
daytimetcpsrvv6.o(.text+0x48):/root/unpv12e/intro/daytimetcpsrvv6.c:18: undefined reference to `ipv6addr_any'
daytimetcpsrvv6.o(.text+0x56):/root/unpv12e/intro/daytimetcpsrvv6.c:18: undefined reference to `ipv6addr_any
collect2: ld returned 1 exit status
make: *** [daytimetcpsrvv6] Error
将daytimetcpsrvv6.c:18的语句extern struct in6_addr ipv6addr_any;
改为struct in6_addr ipv6addr_any;

#./daytimetcpsrv &
#./daytimetcpcli 127.0.0.1
得到输出时间应该就表示安装初步成功了。

------------------------------------------

建议在执行server和client时加上port number
加入port number的修改 :  
tcpservselect.c
加入 -> int SERVER_PORT = (u_short)atoi(argv[1]);
修改 -> servaddr.sin_port = htons(SERVER_PORT);
SERVER_PORT变量名称可以自取
执行时加入port
./tcpservselect01 9999

tcpcli01.c
加入 -> int SERVER_PORT = (u_short)atoi(argv[2]);
修改 -> if (argc != 3)
err_quit("usage: tcpcli <IPaddress> <Port>");
servaddr.sin_port = htons(SERVER_PORT);
SERVER_PORT变量名称可以自取
执行时加入port
./tcpcli01 140.113.235.131 9999
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值