unix网络编程起步

本文档介绍了在Unix环境下进行网络编程时遇到的编译问题及解决方案。首先,从www.unpbook.com下载源代码,编译过程中遇到'AF_LINK'未声明的错误,通过在相应头文件中添加宏定义解决。接着,解决'inet_ntop'函数参数类型不匹配的问题,将size_t改为socklen_t。最后,通过安装和配置xinetd服务,成功运行daytimetcpcli程序并获取数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先去www.unpbook.com 下载源代码

编译代码

  1. 解压 tar包, tar -xvz -f
  2. cd unpv13e/lib , make代码,报错信息get_ifi_info.c:63:34: error: ‘AF_LINK’ undeclared (first use in this function)如下:
    报错截图
    原因在于有一个变量没有定义,在标准库里也找不到相关定义,于是自己grep代码在,/usr/include/net/if_dl.h找到了关键字,网上搜索是定义为18,就在该文件中增加宏定义,解决问题,但明显应该linux环境下没有用到类似link_level sockaddr.
    #define AF_LINK 18
  3. cd unpv13e/libfree,make代码,报错信息inet_ntop.c:60:9: error: argument ‘size’ doesn’t match prototype如下:
    报错截图
    这里跟/usr/include/arpa/inet.h 中的申明中类型不一样,把libfree/inet_ntop.c中 size_t改为socklen_t就好。
  4. cd intro , make daytimetcpcli
  5. ./daytimecpcli 127.0.0.1, 这时候报错连接拒绝,是因为Linux系统中默认没有安装daytime服务,可以下载yum install xinetd,编辑/etc/xinetd.d/daytime-stream,把disable 关闭,然后开启服务xinetd -d ,再次运行程序返回数据。
#This is the configuration for the tcp/stream daytime service.                                                                                               
service daytime
{
#This is for quick on or off of the service
    disable     = no
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值