第8章 Socket编程.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:58 大小:431KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第8章 Socket编程.ppt

第8章Socket编程.ppt

预览

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

15 金币

下载此文档

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

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

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

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

第八章Socket编程内容一、Socket概述Socket作为一种通信协议应用程序接口(APIs),依赖于操作系统和编程语言,主要有:UNIX:BerkeleySockets(C语言)WINDOWS:WinSock常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。Socket接口还定义了原始Socket(SOCK_RAW),允许程序使用IP协议。Socket编程的相关概念1、流(Stream)计算机中的流其实是一种信息的转换。于某一对象,通常把对象接收外界的信息输入称为输入流,把对象向外输出信息为输出流,合称为输入/输出流(I/OStream)。对象间进行数据交换时总是先将数据转换为某种形式的流,再通过流的传输,到达目的对象后再将流转换为对象数据。所以,可以把流看作是一种数据的载体,通过它可以实现数据交换和传输。2、连接(Connection)3、阻塞(Block)、非阻塞(Non-block)4、同步(Synchronous)、异步(asynchronous)所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回,同时其它线程也不能调用这个方法。5、IP地址(IPAddress)6、字节顺序(BytesOrder)字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端、大端两种字节顺序。7、带外数据(OutbandData)带外数据,也称为TCP紧急数据,是相连的每一对流套接口间一个逻辑上独立的传输通道。带外数据是独立于普通数据传送给用户的。需要用到的头文件数据类型:#include<sys/types.h>函数定义:#include<sys/socket.h>BerkeleySocket常用函数基本Socket函数参数获取/设置函数转换函数1、基本Socket函数2、参数获取/设置函数gethostbyaddr,gethostbyname:返回对应于给定IP地址/主机名的主机信息。gethostname:获取主机名。getpeername:获取对方名字。getsockname:获取一个与套接字相联系的本地名字。getprotobyname,getprotobynumber:返回对应于给定协议名/协议号的相关协议信息。getservbyname,getservbyport:返回对应于给定服务名/端口号的相关服务信息。getsockopt,setsockopt:获取/设置套接字选项。ioctl:控制I/O设备。3、转换函数(1)IP地址转换inet_addr():将点间隔的字符串格式地址转换成二进制IP地址。inet_ntoa():将二进制IP地址转换成点间隔的字符串格式。(2)字节顺序转换htons()和htonl()ntohs()和ntohl()二、Socket地址其中地址簇可以取下列值之一:AF_UNIXAF_INETAF_NSAF_IMPLINK其中,AF代表“AddressFamily”,常见的地址类型是Internet、XNS和UNIX。对于使用最多的Internet簇,其Socket地址主要包括两大部分:端口号、IP地址,它的地址结构在<netinet/in.h>中定义。structsockaddr_in{shortintsin_family;/*AF_INET*/unsignedshortintsin_port;structin_addrsin_addr;unsignedcharsin_zero[8];/*填充0*/};structsockaddr_inmy_addr;my_addr.sin_family=AF_INET;my_addr.sin_port=htons(3490);my_addr.sin_addr.s_addr=inet_addr("132.241.5.10");bzero(&(my_addr.sin_zero),8);注意:sin_port置为0表示系统随机选择一个未用端口,sin_addr.s_addr置为INADDR_ANY时,系统自动填入本机IP。三种地址类型的socket结构三、Socket工作步骤一个服务程序和几个远程客户程序利用面向连接的TCP协议完成通信。第一步,初始化服务程序(1)调用socket创建一个新的套接字,并在传输层实体中分配空间,返回一个socket描述符以便调用中使用该套接字;(2)调用bind将一个端口标识(IP地址