欢迎来到天天文库
浏览记录
ID:52241643
大小:420.53 KB
页数:34页
时间:2020-03-25
《Linux系统编程(第七章)套接字 socket.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第七章:套接字SOCKET目标:本章旨在向学员介绍Linux系统时间:3学时下套接字的使用及方法:教学方法:讲授PPT、1)掌握面向连接的套接字编程实例练习方法2)掌握非连接的套接字编程方法7.1关于SOCKET为不同机器上的两个进程之间提供通信功能功能机制在硬件层通过网络设备连接,在软件层实现实现通过标准的网络协议集TCP或UDP7.1关于SOCKET•socket提供了不同主机进程间数据通信的机制进程A进程A进程B进程B进程C进程C进程D进程Dsocketsocket7.2套接字•IP地址#includein_addr_tinet_a
2、ddr(constchar*ip_address);返回值in_addr_t调用成功后,将返回IP地址,错误返回-1例子:in_addr_tserver;server=inet_addr(“192.168.0.1”);7.2套接字•端口网络套接字结构定义如下:#includestructsockaddr_in{sa_family_tsin_family;/*internetaddressfamily*/in_port_tsin_port;/*portnumber*/structin_addrsin_addr;/*holdstheIPad
3、dress*/unsignedcharsin_zero[8]/*filling*/};7.2套接字•主机字节序与网络字节序这些函数将16位和32位整数在主机字节序和网络字节序之间进行转换#includeunsignedlonginthtonl(unsignedlonginthostlong);unsignedshortinthtons(unsignedshortinthostshort);unsignedlongintntohl(unsignedlongintnetlong);unsignedshortintntohs(unsigned
4、shortintnetshort);server_address.sin_addr.s_addr=htonl(INADDR_ANY);server_address.sin_port=htons(9734);7.2套接字•地址转换打印函数inet_ntoa将网络字节转换为可打印四点表示法格式的字符串#includechar*inet_ntoa(structin_addrin)•gethostname函数获得当前主机的名字,存入name参数中#includeintgethostname(char*name,intnamel
5、ength);7.2套接字•socket函数:功能为创建通信连接句柄#includeintsocket(intdomain,inttype,intprotocol);参数domain:指定套接字的类型AF_INET网络上的套接字AF_UNIX进程都运行于同一台机器时参数type:指定了建立的套接字是用于连接模型还是无连接模型SOCK_STREAM连接模型,默认TCP协议SOCK_DGRAM无连接模型,默认UDP协议参数protocol:指定所使用的协议该值一般被设为0,表示默认协议7.2套接字•bind(绑定)把电脑上真正的网络地址与一
6、个套接字标识符关联起来#include#includeintbind(intsockfd,conststructsockaddr*address,size_tadd_len);参数sockfd:是从socket系统调用返回的文件描述符参数address:指向套接字结构的指针。参数add_len:存储套接字实际使用的地址指针的大小bind调用成功返回0,错误返回-17.2套接字•listen(监听)绑定之后,在任何客户端系统可以连接到新建立的服务器端点之前,服务器必须设定为等待连接。#include7、cket.h>intlisten(intsockfd,intqueue_size);参数sockfd:sock系统调用返回的文件描述符参数queue_size:允许多少个连接请求排入队列7.2套接字•accept(接受连接)当服务器收到客户端connect请求时,必须建立一个全新的套接字来处理这个特定的通信。第一个套接字只用来建立通信,第二个套接字由accept完成。#include#includeintaccept(intsockfd,structsockaddr*address,size_t*add_len8、);参数s
7、cket.h>intlisten(intsockfd,intqueue_size);参数sockfd:sock系统调用返回的文件描述符参数queue_size:允许多少个连接请求排入队列7.2套接字•accept(接受连接)当服务器收到客户端connect请求时,必须建立一个全新的套接字来处理这个特定的通信。第一个套接字只用来建立通信,第二个套接字由accept完成。#include#includeintaccept(intsockfd,structsockaddr*address,size_t*add_len
8、);参数s
此文档下载收益归作者所有