掌握套接字的概念及Socket类用法掌握面向连接套接字编程.ppt
上传人:天马****23 上传时间:2024-09-11 格式:PPT 页数:24 大小:1.3MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

掌握套接字的概念及Socket类用法掌握面向连接套接字编程.ppt

掌握套接字的概念及Socket类用法掌握面向连接套接字编程.ppt

预览

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

10 金币

下载此文档

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

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

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

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

目标一个连接由它的两个端点标识,这样的端点称为套接字。套接字是支持TCP/IP协议的网络通信的基本操作单元。可以将套接字看作不同主机间的进程进行双向通信的端点。对于UDP协议尽管两个进程之间没有建立连接,但是也同样存在发送端点,和接收端点,也同样使用套接字的概念。上图连接1的一对套接字为:(192.168.2.23,5000)和(192.168.2.122,8888)上图连接2的一对套接字为:(192.168.2.23,5001)和(192.168.2.122,8888)套接字的组成套接字的类型Socket类包含在System.Net.Sockets命名空间中。使用Socket类编程,由于很多细节都需要自己考虑,相对来说复杂一些,易出错。一般对套接字编程比较熟悉的人,或者使用非标准协议(自定义的新协议)进行编程的时候,才使用Socket类。AddressFamilyAaddressFamily表示网络类型,该参数使用AddressFamily枚举指定Socket使用的寻址方案例如AddressFamily.InterNetwork表示IP版本4的地址。AddressFamily枚举SocketTypeSocketTyp指定Socket的类型,该参数使用SocketType枚举指定使用哪种套接字。例如:SocketType.Stream表明连接是基于流套接字的SocketType.Dgram表示连接是基于数据报套接字SocketType.Raw表示连接基于原始套接字;ProtocolTypeProtocolType指定Socket使用的协议,该参数使用ProtocolType枚举指定使用哪种协议。例如:ProtocolType.Tcp表明连接协议是TCPProtocolType.Udp表明连接协议是UDPSocketTypeIP连接领域有两种通信类型:面向连接的(connection-oriented)无连接的(connectionless)。根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听客户端请求连接确认服务器监听:是指服务器套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器套接字的地址和端口号,然后再向服务器套接字提出连接请求。连接确认:是指当服务器套接字监听到客户端套接字的连接请求时,它就响应客户端套接字的请求,把服务器套接字的信息发给客户端,一旦客户端确认了此信息,连接即可建立。而服务器套接字继续监听其他客户端套接字的连接请求。Socket()Bind()Listen()Accept()Receive()Send()Close()同步TCP编写服务器端程序的一般步骤为:1)创建一个包含采用的网络类型、数据传输类型和协议类型的本地套接字对象,并将其与服务器的IP地址和端口号绑定。这个过程可以通过Socket类。2)在指定的端口进行监听,以便接受客户端连接请求。3)一旦接受了客户端的连接请求,就根据客户端发送的连接信息创建与该客户端对应的Socket对象。4)根据创建的Socket对象,分别与每个连接的客户进行数据传输。5)根据传送信息情况确定是否关闭与对方的连接。使用同步TCP编写客户端程序的一般步骤为:1)创建一个包含传输过程中采用的网络类型、数据传输类型和协议类型的Socket对象。2)与远程服务器建立连接。3)与服务器进行数据传输。4)完成工作后,向服务器发送关闭信息,并关闭与服务器的连接。1.建立连接(服务器)IPHostEntrylocal=Dns.GetHostByName(Dns.GetHostName());IPEndPointiep=newIPEndPoint(local.AddressList[0],1180);SocketlocalSocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);localSocket.Bind(iep);locatSocket.Listen(10);SocketclientSocket=localSocket.Accept();1.建立连接(客户端)IPAddressremoteHost=IPAddress.Parse("192.168.0.1");PEndPointiep=newIPEndPoint(r