2017.1.11--linux系统下的C语言--网络编程

不同的程序进行网络通信时,是通过IP地址套接字来访问一个主机的。

11.1 IP地址:

IP地址---网卡地址----在程序中是通过IP地址来访问一台计算机的。(比如一个手机的号码

IP地址:32位长度的二进制数值,4个字节---点分10进制

ubuntu查看本机IP: ifconfig -a

1.1.2 端口

所谓端口,是指计算机中为了标识在计算机中访问网络的不同程序而设的编号

程序在访问网络接受访问时,会用这个标识符表示这一网络数据属于这个程序

这里的端口并非网卡接线的端口,而是不同程序的逻辑编号,并不是实际存在的

端口号是一个16位的无符号整数----10进制取值范围0~65536.

WWW服务使用的是80号端口,FTP服务使用的是21号端口。低于256的端口是系统保留端口

不在这个范围内的是自由端口号在编程时可以调用这些端口号

11.3 域名

百度网站---119.75.217.109---------www.baidu.com

11.1.4 TCPUDP

TCP和UDP是两种不同的网络传输方式。

两个不同计算机中的程序,使用IP地址和端口,要使用一种约定的方法进行数据传输

TCP:面向连接的网络传输方式,理解为打电话。可靠、缺点是传输过程复杂,需要占用较多的网络资源。

UDP:不面向连接的传输方式。理解为邮寄信件。不可靠,但是传输效率很高。(比如网络视频监控,要求实时性好,用UDP)

11.2 套接字:在网络中用来描述计算机中不同程序与其他计算机程序的套接字。

11.2.1 什么是套接字

为了区分不同的应用程序的进程和连接,需要使用应用程序TCP/IP协议交互的套接字(Socket)的接口。

三个参数:1.通信的目的地的IP地址,使用的传输层协议(TCP或UDP)和使用的端口号。

这三个参数可以构成一个套接字。

这个套接字相当于一个接口,可以进行不同计算机程序的信息传输

11.2.2 套接字相关的数据类型

sockaddr , sockaddr_in-------------------系统中定义的结构体用于保存套接字的信息

struct sockaddr

{

    unsigned short int sa_family;

    char sa_data[14];

}

short int sa_family---指定通信的地址类型。

11.2.3 套接字类型

1.流套接字(SOCK_STREAM)

2.数据报套接字(Raw Sockets)

3.原始套接字(SOCK_RAW)


11.3 域名与IP地址

C程序中的IP地址和域名的转换问题。

11.3.1 用域名取得主机的IP地址

函数:gethostbyname

11.3.2 用IP地址返回域名

函数:gethostbyaddr

11.4 网络协议:不同的计算机、不同的操作系统在进行网络通信时的统一约定

11.4.1 由协议名取得协议数据:

函数:getprotobyname

需要包含头文件:#include <netdb.h>

11.4.2 由协议编号取得协议信息

函数:getprotobynumber。

11.4.3 取得系统支持的所有协议。

函数:getprotoent

系统中支持的协议的类型是记录在/etc/protocols文件中的。


11.5 网络服务:网络上的计算机通过运行程序为其他的计算机提供信息或运算的功能。【比如打开一个网络是访问了网站服务器上的服务】

11.5.1 取得系统支持的网络服务

函数servent

系统文件列表中支持的服务:vim /etc/services。

11.5.2 用名称取得系统所支持的服务

11.5.3 由端口取得服务名称

11.6 网络IP地址的转换

网络IP地址在网络传输与计算机内部的字符存储的方式是不同的,需要用相关的函数将网络IP地址进行转换

11.6.3 主机字符顺序与网络字符顺序的转换

计算机中的字符与网络中的字符的存储顺序是不同的

11.7 错误处理






















linux C语言 网络编程教程及源码 一、网络应用层编程 1、Linux网络编程01——网络协议入门 2、Linux网络编程02——无连接和面向连接的区别 3、Linux网络编程03——字节序和地址转换 4、Linux网络编程04——套接字 5、Linux网络编程05——C/S与B/S架构的区别 6、Linux网络编程06——UDP协议编程 7、Linux网络编程07——广播 8、Linux网络编程08——多播 9、Linux网络编程09——TCP编程之客户端 10、Linux网络编程10——TCP编程之服务器 11Linux网络编程11——tcp、udp迭代服务器 12、Linux网络编程12——tcp三次握手、四次挥手 13、Linux网络编程13——connect()、listen()和accept()三者之间的关系 14、Linux网络编程14——I/O复用之select详解 15、Linux网络编程15——I/O复用之poll详解 16、Linux网络编程16——I/O复用之epoll详解 17、Linux网络编程17——tcp并发服务器(多进程) 18、Linux网络编程18——tcp并发服务器(多线程) 19、Linux网络编程——tcp高效并发服务器(select实现) 20、Linux网络编程——tcp高效并发服务器(poll实现) 21、Linux网络编程——tcp高效并发服务器(epoll实现) 二、网络底层编程(黑客模式) 1、Linux网络编程1——啥叫原始套接字 2、Linux网络编程2——原始套接字编程 3、Linux网络编程3——原始套接字实例:MAC头分析 4、Linux网络编程4——原始套接字实例:MAC地址扫描器 5、Linux网络编程5——IP数据报格式详解 6、Linux网络编程6——TCP、UDP数据包格式详解 7、Linux网络编程7——原始套接字实例:发送UDP数据包 8、Linux网络编程8——libpcap详解 9、Linux网络编程9——libnet详解
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值