Unix网络编程环境搭建
来源:互联网 发布:mac用户名怎么改 编辑:程序博客网 时间:2024/06/05 00:26
下面开始用简单但典型的客户端和服务器端程序说明如何进行网络编程。这一小节讲的是客户端,一个用来连接并读取服务器发送来的时间的客户端。
这里涉及到了编写代码,因此要
搭建unix网络编程环境
unix系统我没安装,系统不易获得而且也没必要安装unix。用linux是最佳选择。再者我本来就是ubuntu系统,所以就在ubuntu下搭建环境了。
1,安装编译器,为了齐全还是安装一下build-essential
- sudo apt-get install build-essential
点此下载unpv12e.tar.gz(这个编译有问题)点此下载unpv13e.tar.gz(这个经itnovice回复中告诉我已经解决了错误,所以最好用这个,能节省很多时间)
(下载unpv13e的话,3中解决问题的地方就可以略过了)
3,解压unpv12e.tar.gz后进入目录查看README,然后可以按照里面提示操作,不过会遇到问题
第一步:在终端中进入upnv12e目录,然后执行代码:
- ./configure
第二步:这里有问题及解决方法
- 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: error: redefinition of ‘struct in_pktinfo’
- make: *** [connect_nonb.o] 错误 1
redefinition of ‘struct in_pktinfo’的解决方法如下:
结构in_pktinfo已经包含在标准头文件bits/in.h中了, 它又通过 netinet/in.h 在unp.h中被包括进来. 只要将 unp.h 中的结构定义comment out注释掉就行了.
注释掉之后重新
- make //build the basic library that all programs need
这次就成功了!生成了../libunp.a文件。
第三步:这一步没有问题
第四步:这步解决方法麻烦一点
- cd ../libfree # continue building the basic library
- make
[python] view plaincopyprint?
- cd ../libgai # the getaddrinfo() and getnameinfo() functions
- make
- 错误提示如下:
- gcc -g -O2 -D_REENTRANT -Wall -c -o getaddrinfo.o getaddrinfo.c
- getaddrinfo.c: In function ‘getaddrinfo’:
- getaddrinfo.c:58: error: ‘EAI_ADDRFAMILY’ undeclared (first usein this function)
- getaddrinfo.c:58: error: (Each undeclared identifieris reported only once
- getaddrinfo.c:58: error: for each function it appears in.)
- getaddrinfo.c:116: error: ‘EAI_NODATA’ undeclared (first usein this function)
- make: *** [getaddrinfo.o] 错误 1
解决方法如下:
回到unpv12e目录:
- cd ..
- gedit configure.in
cd ..gedit configure.in找到下面一行注释掉
LIBGAI_OBJS="getaddrinfo.o getnameinfo.o freeaddrinfo.o gai_strerror.o"
然后用下面的代码代替注释掉的那行
- LIBGAI_OBJS=
- if test "$ac_cv_func_getaddrinfo" = no ; then
- LIBGAI_OBJS="$LIBGAI_OBJS getaddrinfo.o"
- fi
- if test "$ac_cv_func_getnameinfo" = no ; then
- LIBGAI_OBJS="$LIBGAI_OBJS getnameinfo.o"
- fi
- if test "$ac_cv_func_freeaddrinfo" = no ; then
- LIBGAI_OBJS="$LIBGAI_OBJS freeaddrinfo.o"
- fi
- if test "$ac_cv_func_gai_strerror" = no ; then
- LIBGAI_OBJS="$LIBGAI_OBJS gai_strerror.o"
- fi
- autoconf
- ./configure
autoconf./configure
- gedit Make.defines
gedit Make.defines在文件末尾加上下面这句:
CFLAGS = -g -O2 -D_REENTRANT -Wall -D_GNU_SOURCE然后重新执行代码:
- cd libgai # continue building the basic library
- make
cd libgai # continue building the basic librarymakeok,问题解决了!
cd libgai # continue building the basic library make
4,将生成的libunp.a静态库复制到/usr/lib/和/usr/lib64/中。
- cd .. //回到unpv12e目录
cd .. //回到unpv12e目录
- sudo cp libunp.a /usr/lib
- sudo cp libunp.a /usr/lib64
gedit lib/unp.h //将unp.h中#include "../config.h"修改为#include "config.h"
- sudo cp lib/unp.h /usr/include
- sudo cp config.h /usr/include
- cd ./intro
- gcc daytimetcpcli.c -o daytimetcpcli -lunp
跟普通的编译不一样的是要在最后加上刚才那个链接库,-l参数加上刚才那个libunp.a去掉lib和后面的.a。最后得到参数-lunp。
7,编写程序
以后编写完的程序安装6中的代码编译就行了,然后代码可以完全跟书上的一样。代码编辑器或IDE等就按自己的喜好来选了。这个网上很多c语言编程环境搭建教程。
- Unix网络编程环境搭建
- unix网络编程 环境搭建 环境配置
- Unix网络编程—环境搭建
- unix网络编程环境搭建及使用方法
- Unix网络编程之环境搭建
- linux clion unix网络编程环境搭建
- unix网络编程源代码环境搭建
- UNIX网络编程之一:代码环境搭建
- 《Unix NetWork Programming》(Unix网络编程)—环境搭建
- unix网络编程环境
- unix网络编程环境
- unix网络编程环境
- UNIX网络编程和UNIX环境高级编程的环境搭建和运行实例
- UNIX环境高级编程、UNIX网络编程(卷一)环境搭建
- Unix网络编程第三版中代码环境搭建
- Unix网络编程第三版中代码环境搭建
- Unix 网络编程 学习笔记一 环境搭建
- 《UNIX网络编程》实验环境搭建、unp.h
- hdu1598 find the most comfortable road
- JAVA的大数处理
- 32位计算机与64计算机
- XMU 1350.幸运数组 连续子数组被k整除的个数 STL
- Unity 读取xml 文件
- Unix网络编程环境搭建
- 查看VC程序内存泄露的方法
- 增强for循环用法
- JAVA读取Excel--用POI与Excel交互
- PHP引入文件出现空白行问题
- poj 2352 Stars (树状数组 + 1)
- Trie, Hash, MinADFA
- C 简单实现LBS基站定位
- ivy教程(3)-调整默认设置