chapter08 网络编程.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:37 大小:1.4MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

chapter08 网络编程.ppt

chapter08网络编程.ppt

预览

免费试读已结束,剩余 27 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

重点内容:TCP/IP基础套接字网络编程一、TCP/IP基础一、TCP/IP基础网络上拦截下来的数据一、TCP/IP基础TCP/IP四层调用关系二、BSD套接字接口三、客户机/服务器(C/S)模式四、套接字网络编程图基于数据流的socket编程流程图基于数据报的socket编程流程四、套接字网络编程四、套接字网络编程其中,(1)sa_family可以取下列值之一:AF_UNIXUnix域协议簇(本机的进程间通信时使用)AF_INETTCP/IP协议簇(Internet采用TCP/IP协议簇)AF_ISOISO协议簇注:AF_代表“addressfamily”。(2)sa_data根据不同的地址类型(即sa_family的不同取值)来解释,常见的地址类型是AF_INET。对于使用最多的AF_INET地址类型,其协议地址主要包括两大部分:IP地址、端口号,它的地址结构在<netinet/in.h>中定义。对于地址类型为AF_INET的协议地址,其定义如下:structsockaddr_in{shortintsin_family;/*Addressfamily*/unsignedshortintsin_port;/*Portnumber*//*16-bitportnumber,网络字节顺序*/structin_addrsin_addr;/*Internetaddress*//*32位IP地址(网络号+主机号),网络字节顺序*/unsignedcharsin_zero[8];/*填充0,以保持与通用套接字地址(structsockaddr)同样大小*/};其中,structin_addr{unsignedlongs_addr;/*32位IP地址(网络号+主机号),网络字节顺序*/}这两个数据结构类型(structsockaddr和structsockaddr_in)是等效的,可以相互转换,通常使用sockaddr_in更为方便。四、套接字网络编程四、套接字网络编程四、套接字网络编程四、套接字网络编程四、套接字网络编程四、套接字网络编程四、套接字网络编程四、套接字网络编程四、套接字网络编程四、套接字网络编程四、套接字网络编程创建一个新的通信端点四、套接字网络编程四、套接字网络编程四、套接字网络编程四、套接字网络编程四、套接字网络编程由于在前面介绍的函数如connect、recv、send等都是阻塞性函数,若资源没有准备好,则调用该函数的进程将进入阻塞状态,这样无法实现I/O多路复用了,下面介绍两种I/O多路复用的解决方案。1、fcntl函数实现(非阻塞方式)通过设置socket为非阻塞方式,可以实现“轮询”若干socket。但这种“轮询”会使CPU处于忙等待方式,从而降低性能,浪费资源。2、select函数实现select调用socket集合(即文件描述符集合)Select应用举例Thanks!