欢迎来到天天文库
浏览记录
ID:59294344
大小:269.50 KB
页数:46页
时间:2020-09-20
《嵌入式Linux网络应用开发ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章嵌入式Linux网络应用开发本章要点1、IP地址、端口号及网络套接字等概念2、利用套接字进行网络编程的方法3、编写客户机/服务器系统的应用程序4、编写嵌入式系统的Web服务器程序5、开发新的TCP通信协议7.1 网络编程基础知识7.1.1 IP地址和端口号1、客户端程序和服务端程序2、IP地址3、端口“端口号”标识正在计算机上运行的进程(程序)。端口号是一个整数,其取值范围为0~65535之间。4、TCP与UDP协议“传输控制协议”(TransmissionControlProtocol,简称TCP),“用户数据报协议”(Us
2、erDatagramProtocol,简称:UDP)。7.1.2 套接字1、什么是套接字在TCP/IP通信协议中,套接字(Socket)就是IP地址与端口号的组合。如图所示,IP地址193.14.26.7与端口号13组成一个套接字。2、套接字类型(1)字节流套接字,基于TCP协议的连接和传输方式,又称为TCP套接字。(2)数据报套接字,基于UDP协议的连接和传输方式,又称为UDP套接字。(3)原始套接字,原始套接字允许对底层协议如IP或ICMP进行直接访问,提供TCP套接字和UDP套接字所不提供的功能,主要用于对一些协议的开发,如构造
3、自己的TCP或UDP分组等。7.2.1 Socket网络函数1、socket函数调用socket函数获得一个套接字描述符。intsocket(intfamily,inttype,intprotocol);函数返回值:成功则返回套接字描述符,这是一个非负整数,若出错则返回-1。2、bind函数该函数为套接字描述符分配一个本地IP地址和一个端口号,将IP地址和端口号与套接字描述符绑定在一起。intbind(intsockfd,structsockaddr*myaddr,intaddrlen);函数返回值:若调用成功则返回0,若出错则返回
4、-1。3、地址结构在网络编程中有二个很重要的数据类型,它们是地址结构structsockaddr和structsockaddr_in,这两个数据类型都是用来存放socket信息的。Structsockaddr的结构structsockaddr{ unsigned shortsa_family;/*通信协议类型族,AF_xxx*/ char sa_data[14];/*14字节协议地址,包含该socket的IP地址和端口号*/ };struct sockaddr_in数据结构:struct sockaddr_in{
5、 short intsin_family;/*通信协议类型族*/ unsigned short intsin_port;/*端口号*/ struct in_addr sin_addr;/*IP地址*/ unsigned char sin_zero[8];/*填充0以保持与sockaddr结构的长度相同*/ };4、connect函数该函数用于在客户端通过socket套接字建立网络连接。intconnect(intsockfd,conststructsockaddr*serv_addr,socklen_taddrl
6、en); 函数返回值:若连接成功则返回0,若连接失败则返回-1。5、listen函数listen函数应用于TCP连接的服务程序,它的作用是通过socket套接字等待来自客户端的连接请求。intlisten(intsockfd,intbacklog); 函数返回值:若连接成功则返回0,若连接失败则返回-1。6、accept函数accept调用后,服务器程序会一直处于阻塞状态,等待来自客户端的连接请求。intaccept(intsockfd,structsockaddr*cliaddr,socklen_t*addrlen);函数返回
7、值:若接收到客户端的连接请求,则返回非负的套接字描述符,若失败,则返回-1。7、send()和recv()函数这两个函数分别用于发送和接收数据。intsend(intsockfd,constvoid*msg,intlen,intflags);intrecv(intsockfd,void*buf,intlen,unsignedintflags);函数返回值:send函数返回发送的字节数,recv函数返回接收数据的字节数。若出错则返回-1。8、sendto()和recvfrom()函数这两个函数的作用与send()和recv()函数类似,
8、也是用于发送和接收数据。7.2.2 socket网络编程示例1、程序流程利用Socket方式进行数据通信与传输,有如下步骤:(1)创建服务端socket,绑定建立连接的端口。(2)服务端程序在一个端口处于阻塞状态,等待客
此文档下载收益归作者所有