Linux系统编程(第七章)套接字 socket.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:34 大小:420KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

Linux系统编程(第七章)套接字 socket.pdf

Linux系统编程(第七章)套接字socket.pdf

预览

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

15 金币

下载此文档

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

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

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

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

第七章:套接字SOCKET目标:本章旨在向学员介绍Linux系统时间:3学时下套接字的使用及方法:)掌握面向连接的套接字编程教学方法:讲授PPT、1实例练习方法2)掌握非连接的套接字编程方法7.1关于SOCKET为不同机器上的两个进程之间提供通信功能功能机制在硬件层通过网络设备连接,在软件层实现实现通过标准的网络协议集TCP或UDP7.1关于SOCKET•socket提供了不同主机进程间数据通信的机制进程A进程A进程B进程B进程C进程C进程D进程Dsocketsocket7.2套接字•IP地址#include<arpa/inet.h>in_addr_tinet_addr(constchar*ip_address);返回值in_addr_t调用成功后,将返回IP地址,错误返回-1例子:in_addr_tserver;server=inet_addr(“192.168.0.1”);7.2套接字•端口网络套接字结构定义如下:#include<netinet/in.h>structsockaddr_in{sa_family_tsin_family;/*internetaddressfamily*/in_port_tsin_port;/*portnumber*/structin_addrsin_addr;/*holdstheIPaddress*/unsignedcharsin_zero[8]/*filling*/};7.2套接字•主机字节序与网络字节序这些函数将16位和32位整数在主机字节序和网络字节序之间进行转换#include<netinet/in.h>unsignedlonginthtonl(unsignedlonginthostlong);unsignedshortinthtons(unsignedshortinthostshort);unsignedlongintntohl(unsignedlongintnetlong);unsignedshortintntohs(unsignedshortintnetshort);server_address.sin_addr.s_addr=htonl(INADDR_ANY);server_address.sin_port=htons(9734);7.2套接字•地址转换打印函数inet_ntoa将网络字节转换为可打印四点表示法格式的字符串#include<arpa/inet.h>char*inet_ntoa(structin_addrin)•gethostname函数获得当前主机的名字,存入name参数中#include<unistd.h>intgethostname(char*name,intnamelength);7.2套接字•socket函数:功能为创建通信连接句柄#include<sys/socket.h>intsocket(intdomain,inttype,intprotocol);参数domain:指定套接字的类型AF_INET网络上的套接字AF_UNIX进程都运行于同一台机器时参数type:指定了建立的套接字是用于连接模型还是无连接模型SOCK_STREAM连接模型,默认TCP协议SOCK_DGRAM无连接模型,默认UDP协议参数protocol:指定所使用的协议该值一般被设为0,表示默认协议7.2套接字•bind(绑定)把电脑上真正的网络地址与一个套接字标识符关联起来#include<sys/types.h>#include<sys/socket.h>intbind(intsockfd,conststructsockaddr*address,size_tadd_len);参数sockfd:是从socket系统调用返回的文件描述符参数address:指向套接字结构的指针。参数add_len:存储套接字实际使用的地址指针的大小bind调用成功返回0,错误返回-17.2套接字•listen(监听)绑定之后,在任何客户端系统可以连接到新建立的服务器端点之前,服务器必须设定为等待连接。#include<sys/socket.h>intlisten(intsockfd,intqueue_size);参数sockfd:sock系统调用返回的文件描述符参数queue_size:允许多少个连接请求排入队列7.2套接字•accept(接受连接)当服务器收到客户端connect请求时,必须建立一个全新的套接字来处理这个特定的通信。第一个套接