您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > Chap03-Socket网络编程
第三章Socket网络编程第三章第三章第三章第三章Socket与网络编程与网络编程与网络编程与网络编程本章主要讨论本章主要讨论本章主要讨论本章主要讨论Socket概念概念概念概念、、、、与与与与TCP/IP协议关系协议关系协议关系协议关系、、、、Socket通信通信通信通信,,,,及及及及WindowsSockets编程和实例编程和实例编程和实例编程和实例。。。。3.1套接字套接字套接字套接字Socket和和和和Socket通信基础通信基础通信基础通信基础3.2WindowsSockets网络编程网络编程网络编程网络编程3.3WindowsSocket网络编程实例网络编程实例网络编程实例网络编程实例3.1套接字套接字套接字套接字Socket和和和和Socket通信基础通信基础通信基础通信基础套接字可以方便地实现对网络通信的各种操作套接字可以方便地实现对网络通信的各种操作套接字可以方便地实现对网络通信的各种操作套接字可以方便地实现对网络通信的各种操作。。。。3.1.1套接字套接字套接字套接字Socket的定义的定义的定义的定义3.1.2面向客户端面向客户端面向客户端面向客户端/服务器结构的套接字服务器结构的套接字服务器结构的套接字服务器结构的套接字Socket3.1.3套接字套接字套接字套接字Socket最基本的函数与函数调用流程最基本的函数与函数调用流程最基本的函数与函数调用流程最基本的函数与函数调用流程3.1.1套接字套接字套接字套接字Socket的定义的定义的定义的定义1....进程标识进程标识进程标识进程标识一个主机的每一个网络进程使用协议端口进行标识一个主机的每一个网络进程使用协议端口进行标识一个主机的每一个网络进程使用协议端口进行标识一个主机的每一个网络进程使用协议端口进行标识,,,,这这这这样样样样,,,,要唯一确定网络环境的某个进程要唯一确定网络环境的某个进程要唯一确定网络环境的某个进程要唯一确定网络环境的某个进程((((计算机计算机计算机计算机),),),),就同就同就同就同时需要主机和端口号时需要主机和端口号时需要主机和端口号时需要主机和端口号,,,,在在在在Internet网络环境中网络环境中网络环境中网络环境中,,,,就是同时就是同时就是同时就是同时采用采用采用采用IP地址和端口号来标识的地址和端口号来标识的地址和端口号来标识的地址和端口号来标识的。。。。端口号只能取整数端口号只能取整数端口号只能取整数端口号只能取整数,,,,范围是从范围是从范围是从范围是从0~~~~65535,,,,其中其中其中其中0~~~~1023的端口号一般固定分配给一些系统服务的端口号一般固定分配给一些系统服务的端口号一般固定分配给一些系统服务的端口号一般固定分配给一些系统服务。。。。TCP和和和和UDP协议互相独立协议互相独立协议互相独立协议互相独立。。。。2....多重协议标识多重协议标识多重协议标识多重协议标识多重协议中需要指明是何种通信协议多重协议中需要指明是何种通信协议多重协议中需要指明是何种通信协议多重协议中需要指明是何种通信协议。。。。一个通信进程的多重协议的标识就要用一个三元一个通信进程的多重协议的标识就要用一个三元一个通信进程的多重协议的标识就要用一个三元一个通信进程的多重协议的标识就要用一个三元组组组组::::{协议协议协议协议,,,,本地主机网络地址本地主机网络地址本地主机网络地址本地主机网络地址,,,,本地主机进程瑞本地主机进程瑞本地主机进程瑞本地主机进程瑞口口口口},,,,进行全局唯一地标识进行全局唯一地标识进行全局唯一地标识进行全局唯一地标识。。。。一个完整的网间网进程通信由两个通信进程组成一个完整的网间网进程通信由两个通信进程组成一个完整的网间网进程通信由两个通信进程组成一个完整的网间网进程通信由两个通信进程组成,,,,需要一个五元组来标识需要一个五元组来标识需要一个五元组来标识需要一个五元组来标识::::{协议协议协议协议,,,,本地主机网络地本地主机网络地本地主机网络地本地主机网络地址址址址,,,,本地主机进程瑞口本地主机进程瑞口本地主机进程瑞口本地主机进程瑞口,,,,远程主机网络地址远程主机网络地址远程主机网络地址远程主机网络地址,,,,远程远程远程远程主机进程端口主机进程端口主机进程端口主机进程端口}。。。。Socket套接字套接字套接字套接字Socket套接字套接字套接字套接字::::在在在在Internet网络环境中网络环境中网络环境中网络环境中,,,,协议协议协议协议、、、、IP地址和端地址和端地址和端地址和端口构成了进程间通信的一个端点口构成了进程间通信的一个端点口构成了进程间通信的一个端点口构成了进程间通信的一个端点,,,,抽象为网络编程的接口对抽象为网络编程的接口对抽象为网络编程的接口对抽象为网络编程的接口对象象象象。。。。连接连接连接连接((((Cennection))))::::两个进程之间的通信连路两个进程之间的通信连路两个进程之间的通信连路两个进程之间的通信连路。。。。关联关联关联关联((((Association))))::::一对套接字完全确定了构成一个连一对套接字完全确定了构成一个连一对套接字完全确定了构成一个连一对套接字完全确定了构成一个连接的两个进程接的两个进程接的两个进程接的两个进程。。。。半关联半关联半关联半关联((((Half-Association))))::::一个套接字制定一个连接的一个套接字制定一个连接的一个套接字制定一个连接的一个套接字制定一个连接的一半一半一半一半。。。。Socket套接字又可称为套接字又可称为套接字又可称为套接字又可称为“捆绑捆绑捆绑捆绑”了协议了协议了协议了协议、、、、IP地址和端口的一地址和端口的一地址和端口的一地址和端口的一个通信链的句柄个通信链的句柄个通信链的句柄个通信链的句柄。。。。关联描述关联描述关联描述关联描述在网间网内部在网间网内部在网间网内部在网间网内部,,,,每一个每一个每一个每一个Socket用一个半关联描述为用一个半关联描述为用一个半关联描述为用一个半关联描述为::::{协议协议协议协议,,,,本地地址本地地址本地地址本地地址,,,,本地端口本地端口本地端口本地端口};;;;一对完整的一对完整的一对完整的一对完整的Socket接口构成的一个连接接口构成的一个连接接口构成的一个连接接口构成的一个连接,,,,用一个关联描述用一个关联描述用一个关联描述用一个关联描述为为为为::::{协议协议协议协议,,,,本地地址本地地址本地地址本地地址,,,,本地瑞口本地瑞口本地瑞口本地瑞口,,,,远程地址远程地址远程地址远程地址,,,,远程端口远程端口远程端口远程端口}。。。。每个每个每个每个Socket有一个本地唯一的有一个本地唯一的有一个本地唯一的有一个本地唯一的Socket号号号号,,,,由操作系统分配由操作系统分配由操作系统分配由操作系统分配。。。。3....Socket接口与接口与接口与接口与TCP/IP协议的关系协议的关系协议的关系协议的关系TCP((((TransmissionControlProtocol):):):):传输控制协议传输控制协议传输控制协议传输控制协议。。。。UDP((((UserDataProtocol):):):):用户数据报协议用户数据报协议用户数据报协议用户数据报协议。。。。IP协议协议协议协议((((InternetProtocol):):):):在网络层采用的网间协议在网络层采用的网间协议在网络层采用的网间协议在网络层采用的网间协议。。。。DNS((((DomainNameSystem):):):):域名系统域名系统域名系统域名系统,,,,简称域名简称域名简称域名简称域名,,,,是是是是IP地址的字符型地址地址的字符型地址地址的字符型地址地址的字符型地址。。。。TCP/IP((((TransmissionControlProtocol/InternetProtocol))))协议簇协议簇协议簇协议簇::::一个工业标准的协议集一个工业标准的协议集一个工业标准的协议集一个工业标准的协议集,,,,简称简称简称简称TCP/IP协议协议协议协议,,,,它是为广域网它是为广域网它是为广域网它是为广域网((((WAN))))设计的设计的设计的设计的。。。。其中其中其中其中IP协议和协议和协议和协议和TCP协议是协议中最核心的两个协议协议是协议中最核心的两个协议协议是协议中最核心的两个协议协议是协议中最核心的两个协议。。。。Socket接口与接口与接口与接口与TCP/IP协议协议协议协议Socket是应用层与是应用层与是应用层与是应用层与TCP/IP协议通信的中间软件抽象层协议通信的中间软件抽象层协议通信的中间软件抽象层协议通信的中间软件抽象层,,,,是一组接口是一组接口是一组接口是一组接口。。。。把复杂的把复杂的把复杂的把复杂的TCP/IP协议隐藏在协议隐藏在协议隐藏在协议隐藏在Socket接口后面接口后面接口后面接口后面,,,,对用户来说使用非常方对用户来说使用非常方对用户来说使用非常方对用户来说使用非常方便便便便,,,,通过通过通过通过Socket接口应对复杂网络间通信接口应对复杂网络间通信接口应对复杂网络间通信接口应对复杂网络间通信,,,,以符合指定的协议以符合指定的协议以符合指定的协议以符合指定的协议。。。。不同的不同的不同的不同的Socket不同的传输协议采用不同的不同的传输协议采用不同的不同的传输协议采用不同的不同的传输协议采用不同的Socket接口接口接口接口。。。。((((1))))字节流套接字字节流套接字字节流套接字字节流套接字((((StreamSocket))))((((2))))数据报套接字数据报套接字数据报套接字数据报套接字((((DatagramSocket))))((((3))))原始数据报套接字原始数据报套接字原始数据报套接字原始数据报套接字((((RawSocket))))Socket的出现只是可以更方便地使用的出现只是可以更方便地使用的出现只是可以更方便地使用的出现只是可以更方便地使用TCP/IP协议协议协议协议而已而已而已而已,,,,与与与与TCP/IP协议并没有必然的联系协议并没有必然的联系协议并没有必然的联系协议并没有必然的联系。。。。Socket接口在设计的时候接口在设计的时候接口在设计的时候接口在设计的时候,,,,希望也能适应其他的网络协希望也能适应其他的网络协希望也能适应其他的网络协希望也能适应其他的网络协议议议议。。。。3.1.2面向客户端面向客户端面向客户端面向客户端/服务器结构的服务器结构的服务器结构的服务器结构的套接字套接字套接字套接字Socket服务器端服务器端服务器端服务器端((((Server))))::::专门处理消息专门处理消息专门处理消息专门处理消息、、、、提供服务的进程提供服务的进程提供服务的进程提供服务的进程。。。。客户端客户端客户端客户端((((Client))))::::发送消息发送消息发送消息发送消息、、、、请求处理的进程请求处理的进程请求处理的进程请求处理的进程。。。。总体过程就是客户端发送一个消息给服务器端总体过程就是客户端发送一个消息给服务器端总体过程就是客户端发送一个消息给服务器端总体过程就是客户端发送一个消息给服务器端,,,,服务器端进服务器端进服务器端进服务器端进程收到消息进行处理程收到消息进行处理程收到消息进行处理程收到消息进行处理,,,,把处理结果发送给客户端把处理结果发送给客户端把处理结果发送给客户端把处理结果发送给客户端。。。。Socket正是面向客户正是面向客户正是面向客户正是面向客户/服务器服务器服务器服务器((((C/S))))结构而设计的结构而设计的结构而设计的结构而设计的,,,,针对针对针对针对客户和服务器程序提供不同的客户和服务器程序提供不同的客户和服务器程序提供不同的客户和服务器程序
本文标题:Chap03-Socket网络编程
链接地址:https://www.777doc.com/doc-4145556 .html