欢迎来到天天文库
浏览记录
ID:34654803
大小:388.69 KB
页数:16页
时间:2019-03-08
《嵌入式linux高级编程--06posix_网络编程new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、嵌入式Linux高级编程主讲:成宝宗网络编程基础知识字节序列转换每一个机器内部对变量的字节存储顺序不同(有的系统是高位在前,底位在后,而有的系统是底位在前,高位在后),而网络传输的数据大家是一定要统一顺序的。所以对与内部字节表示顺序和网络字节顺序不同的机器,就一定要对数据进行转换。字节序列转换#includeuint16_thtons(uint16_thostshort);功能:将主机字节顺序转换为网络字节顺序。返回值:成功返回转换后的字节序。地址格式转换#include#include
2、#includeintinet_pton(intaf,constchar*src,void*dst);功能:将点分格式的地址转换为整型。返回值:成功返回1,错误返回-1参数:af:转换格式AF_INET(IPV4)或AF_INET6(IPV6)src:点分格式的地址dst:转换后的整型变量的地址地址格式转换#include#include#includeconstchar*inet_ntop(intaf,constvoid*src,char*dst,soc
3、klen_tcnt);功能:将整型转换为点分格式的地址返回值:成功返回转换后地址,失败返回NULL参数:af:转换格式AF_INET(IPV4)或AF_INET6(IPV6)src:整型变量地址des:用来存储转换后数据的地址cnt:存储空间大小网络编程基础socket概述Linux中的网络编程通过socket接口实现。socket既是一种特殊的IO,它也是一种文件描述符。一个完整的socket都有一个相关描述{协议,本地地址,本地端口,远程地址,远程端口};每一个socket有一个本地的唯一socket号,由操作系统分配。网络编程基础套接字有三种类型:流式套
4、接字(SOCK_STREAM)流式的套接字可以提供可靠的、面向连接的通讯流。它使用了TCP协议。TCP保证了数据传输的正确性和顺序性。数据报套接字(SOCK_DGRAM)数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错。使用数据报协议UDP协议。原始套接字。原始套接字允许对低层协议如IP或ICMP直接访问,主要用于新的网络协议实现的测试等。基于数据流的socket编程流程基于数据报的编程流程网络编程相关函数socket系统调用#include#includein
5、tsocket(intfamily,inttype,intprotocol);功能:socket函数创建一个用于网络通信的套接字,并返回该套接字的整数描述符。返回值:成功返回非零,失败返回-1.参数:family是协议或地址族(对于TCP/IP为PF_INET,也可使用AF_INET)type是服务的类型(对于TCP为SOCK_STREAM,对于UDP为SOCK_DGRAM)protocol是使用的协议号,或是用0指定family和type的默认协议号。bind系统调用#include#includeintbi
6、nd(intsockfd,conststructsockaddr*localaddr,socklen_taddrlen);功能:bind为一个套接字指明一个本地IP和协议端口号。返回值:成功则返回0,失败返回–1。参数:sockfd是由socket调用创建一个套接字描述符localaddr是一个地址结构,指定一个IP地址和协议端口号addrlen是地址结构的字节数大小。structsockaddr{sa_family_tsa_family;charsa_data[14];}listen系统调用#includeintlisten(i
7、ntsockfd,intqueuelen);功能:服务器使用listen是套接字处于被动状态(准备接受联入请求)。返回值:成功则返回0,错误返回–1。参数:sockfd是一个由socket调用创建的套接字描述符queuelen是连接请求的队列大小accept系统调用#include#includeaccept(intsockfd,structsockaddr*addr,socklen_t*addrl
此文档下载收益归作者所有