关键词不能为空

当前您在: 主页 > 英语 >

Socket使用简介

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-15 21:16
tags:

-

2021年2月15日发(作者:南京翻译)



网络通信简介



1



Socket


概述


< br>提到网络通信,我们不得不提下网络通信里面一个很重要的概念——


Socket




1.1



Socket


(套接字)的概念——什么是

socket


socket


的英文原义是






插座



。作为

< br>4BDS UNIX


的进程通信机制,取后一种意思。通


常也称作



套接字



,用于描述


IP


地址和端口,是一个通信链的句柄。被用于解 决不同主机的进


程间通讯问题。后在网络软件中被广泛应用于


T CP/IP


网络,成为开发网络应用软件的强有力工


具。







SOCKET


接口定义了许多函数, 程序员可以用直接用它们来开发网络应用程序。



最早美国加州 大学


Berkeley


分校在


UNIX


下为


TCP/IP


协议研发了一个


API



这个


AP I


就是


著名的


Berkeley So cket


接口


(


套接字


)



在桌面操作系统进入视窗系统时代后,

< p>
仍然继承了


Socket


方法。在


TCP/IP


网络通信环境下,


Socket


数据传输是一种特别的


I/O


,他也相当于一种 文件描


述符,具有一个类似于打开文件的函数调用


-socke t()


。能这样理解:


Socket


实 际上是个通信端


点,通过他,用户的


Socket


程式能通过网络和其他的


Socket


应用程式通信 。


Socket


存在于一


< p>


通信域



为描述一般的线程 怎么通过


Socket


进行通信而引入的一种抽象概念


)


里,


并且和另一


个域 的


Socket


交换数据。




1.2 Windows Sockets(Winsock)



U.C.


Berkeley


大学


BSD


UNIX


中流行的


Socket


接口为范例定义了一套


microsoft


Win dows


下网络编程接口。它不仅包含了人们所熟悉的


Berk eley


Socket


风格的库函数;也包

< br>含了一组针对


Windows


的扩展库函数,以使程序员 能充分地利用


Windows


消息驱动机制进行


编程。



2



网络通信的基础



建立网络间的通信我 们需要知道些什么?首先回到咱们日常生活中的通信,


我们通信的


话肯定需要对方的地址,


然后通过邮局才能给对方写信;


再比 如我们打电话,


就需要对方的


电话号码,


然后服务商才能给你们通信的双方建立连接。


在网络通信中,


充当这一识别功能


的就是


IP


地址和端 口。详情可参看:



c


语言也能干大事 》的


SOCKET


网络通信的介绍。



2.1



基本知识



2.1.1




机字节序和网络字节序


< p>
主机字节序:


即内存中存储字节的方法,


有高位字 节优先和低位字节优先。


不同的操作


系统实现方式不同。



网络字节序:网络协议中处理多字节的的顺序,统一采用高位字节优 先顺序。






主机字节序和网络字节序转换的函数:



#include


uint16_t htons(uint16_t <16


位的主机字节序


>)


uint32_t htonsl(uint32_t <32


位的主机字节序


>) //


转换为网络字节序



uint16_t ntohs(uint16_t <16


位的网络字节序


>)


uint32_t ntohl(uint32_t <32


位的网络字节序


>) //


转换为主机字节序



2.1.2




缓冲区




每个


TCP


SOCKET


都有一个发送缓冲区和一个接收缓冲区,


TCP


具有流量控制,所以


接收缓冲区的大小就是通知另一端的窗口的大小,对方不 会发大于该窗口大小的数据;而


UDPSOCKET


只有一个 接收缓冲区无流量控制,当接收的数据报溢出时就会被丢弃



2.1.3




通信域(地址簇)



套接字存在于特定 的通信域


(


即地址族


)


中,只有隶属于同一地址族的套接字才能建立对


话。常有以下几种类型:



Linux


支持


AF_INET(IPv4


协议


)




AF_INET6(IPv6


协议


)




AF_LOCAL(Unix


域协议


)




2.1.4




接口类型



有以下三种:



字节流套接口


(SOCK_STREAM)


:提供了一个面向连接、可靠的数据传输服 务。



数据报套接口


(SOCK_DG RAM)


:提供了一个无连接服务。



原始套接口


(SOCK_RAW)


:该接口允许对较低层协议, 如


IP



ICMP

直接访问。



AF_INET


和< /p>


SOCK_STREAM


的组合对应


TC P


协议;


AF_INET


< p>


SOCK_DGRAM


的组合对应


UDP


协议;


AF_INET



SOCK_RAW


的组合对应


IP v4


协议。



2.1.5






是整数 型标识符,是操作系统可分配的一种资源,用于操作系统标识通讯进程,


。在

< p>
TCP/IP


传输层的两个协议


TCP

< p>


UDP


是完全独立的两个软件模块,因此各自的 端口号也相


互独立,如


TCP


有一个< /p>


255


号端口,


UDP

< br>也可以有一个


255


号端口,二者并不冲突。

< p>


2.1.6




TCP/UCP


TCP


:面向连接的传输。



UDP


:无连接的传输。



2.2



套接口(

SOCKET


)思想



套接口就是网络连接的一端的


IP


地 址和端口号的二元组。即套接口


(socket)


=网络


地址


+


端口号。其中,网络地址用于定位主机 ,端口用于定位进程


ID








在网络连接中,连接双方两个端点所组成的五元组(即通讯协议、本地


IP


、本地


PORT


、远程


IP


和远程


PORT


)称为


socket pair


,该五元组唯一的标识了一个网络连接。




通信的两个进程间相互作用的主要模式是客户


/


服务器模式



Client /Server model




即客


户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。


2.2.1



服务器端操作步骤



?



打开一监听通道并通知客户机,服 务器愿意在某一公认端口上接收客户请求。




?



等待客户请求到达该端口后,建立 专用的数据传输通道,原监听通道继续监听。




?



数据通道传输数据。



?



关闭服务器。



2.2.2




客户端操作步骤




?



打开一通信通道,并连接到服务器所在主机的特定端口。



?



向服务器发服务请求报文,等待并 接收应答;继续提出请求


......



?



请求结束后关闭通信通道并终止。



2.2.3




特征



?



客户与服务器进程的作用是非对称的,因此编码不同。




?



服务进 程一般是先于客户请求而启动的。只要系统运行,该服务进程一直存在,


直到正常或强迫 终止



3



典型过程图



3.1



无连接协议的套接字调用时序图


(UCP)



3.2



面向连接的套接字的系统调用时序图


(TCP)




3.3



面向连接的应用程序流程图




4



代码流程



//


加载套接字库



#include


#include


还需要添加链接库< /p>


ws2_(


工程


=


设置


=


链接


=


对象


/


库模块


)


WORD wVersionRequested;


//


准备加载


Winsock


库的版 本


,


注意高字节是副版本号



WSADATA wsaData;

< p>
//


是一个返回值,指向


WSADATA


结构的指针,


WSAStartup


函数将其加 载


的库版本信息输入到这个结构体中。



int err;


wVersionRequested = MAKEWORD(1,1);

-


-


-


-


-


-


-


-



本文更新与2021-02-15 21:16,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/656273.html

Socket使用简介的相关文章