资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
任务3 面向连接的TCP同步Socket通信目录任务目标01相关知识点02任务实施03任务目标任务目标v(1)了解)了解TCP协议的特点。协议的特点。v(2)理解套接字工作原理。)理解套接字工作原理。v(3)会建立面向连接的)会建立面向连接的Socket(TCP方式)通信方式。方式)通信方式。相关知识v1、Socket 简介简介v(1)Socket的英文原义是的英文原义是“孔孔”或或“插座插座”。作为通信。作为通信机制,机制,Socket通常也称作通常也称作套接字套接字,用于描述,用于描述IP地址和端地址和端口,是一个通信链的句柄,用来实现不同虚拟机或不同计口,是一个通信链的句柄,用来实现不同虚拟机或不同计算机之间的通信。网络上的两个计算机(或程序)通过一算机之间的通信。网络上的两个计算机(或程序)通过一个双向的通信连接实现数据的交换,这个连接的一端称为个双向的通信连接实现数据的交换,这个连接的一端称为一个一个socket。v(2)Socket是支持是支持TCP/IP协议的网络通信的基本操作单协议的网络通信的基本操作单元,它是网络通信过程中端点的抽象表示,包含进行网络元,它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议、本地主机的通信必须的五种信息:连接使用的协议、本地主机的IP地地址、本地进程的协议端口、远地主机的址、本地进程的协议端口、远地主机的IP地址和远地进程地址和远地进程的协议端口。的协议端口。v(3)在在Internet上的主机一般运行了多个服务软件,同时上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个提供几种服务。每种服务都打开一个Socket,并绑定到一,并绑定到一个端口上,不同的端口对应于不同的服务。个端口上,不同的端口对应于不同的服务。相关知识v2、 Socket通信流程通信流程v使用使用Socket通信流程如图通信流程如图6-12所示。首先建立一个套接字,所示。首先建立一个套接字,并绑定本机的并绑定本机的IP和端口作为服务器端,使用和端口作为服务器端,使用Listen()方法来方法来监听网络上是否有客户端给服务器端发送数据。然后建立客监听网络上是否有客户端给服务器端发送数据。然后建立客户端套接字连接服务器端。服务端监听到客户端连接请求,户端套接字连接服务器端。服务端监听到客户端连接请求,使用使用accept来接收这个连接,最后就可以利用来接收这个连接,最后就可以利用Send/Receive来执行操作了。来执行操作了。相关知识图6-12 Socket通信流程图相关知识任务实施v1. 开发内容开发内容v本任务实现服务器端和客户端的通信,程序设计包括服务器端和本任务实现服务器端和客户端的通信,程序设计包括服务器端和客户端两个方面。客户端两个方面。v1)服务器端开发流程)服务器端开发流程v(1)创建)创建SocketSever控制台程序。控制台程序。v(2)引入命名空间)引入命名空间System.Net.Sockets。v(3)根据图)根据图6-12给出的服务器端系统通信流程编写代码。服务给出的服务器端系统通信流程编写代码。服务器端参考代码如下:器端参考代码如下:任务实施v服务器端服务器端private void button1_Click(object sender, EventArgs e)namespace SocketSever class Program static void Main(string args) Socket localSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); /建立服务器端Socket IPEndPoint iep = new IPEndPoint(IPAddress.Parse(127.0.0.1), 1000); /服务器端IP127.0.0.1端口1000 localSocket.Bind(iep); /绑定本机的IP和端口 localSocket.Listen(10); /监听 Console.WriteLine(服务端开始监听。); Socket clientSocket = localSocket.Accept(); /当有可用的客户端连接尝试时执行,并返回一个新的socket,用于与客户端之间的通信 byte bys = new byte1024; /存放服务端接收到客户端的信息 Console.WriteLine(客户端已连接); clientSocket.Send(Encoding.Default.GetBytes(welcome); /服务器端向客户端发送消息welcome while (true) int recv = clientSocket.Receive(bys); /Socket读取数据 if (recv = 0) /当客户端主动自愿断开连接时recv=0 break; Console.WriteLine(Encoding.Default.GetString(bys, 0, recv); /输出接收到客户端的信息 clientSocket.Close(); localSocket.Close(); /关闭服务端 任务实施v2)客户端开发流程)客户端开发流程v(1)创建)创建SocketClient控制台程序。控制台程序。v(2)引入命名空间)引入命名空间System.Net.Sockets。v(3)根据图)根据图6-12给出的客户端流程图编写代码。客户端参给出的客户端流程图编写代码。客户端参考代码如下:考代码如下:任务实施v客户端客户端/*同步TCP通信客户端 */namespace SocketClient class Program static void Main(string args) IPAddress remoteHost = IPAddress.Parse(127.0.0.1); /建立一个套接字 IPEndPoint iep = new IPEndPoint(remoteHost, 1000); /*服务器地址与端口*/ Socket localSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); /*客户端Socket*/ localSocket.Connect(iep); /*连接服务器端*/ byte bys = new byte1024; /*存放服务器发送的数据*/ int recv = localSocket.Receive(bys); /*客户端接收服务器数据*/ string str = Encoding.Default.GetString(bys, 0, recv); /*将服务器返回数据转化成字符串*/ Console.WriteLine(str); /*显示服务器返回数据*/ string msg; /*声明存放用户输入的信息*/ do msg = Console.ReadLine(); /*获取输入数据*/ bys = Encoding.Default.GetBytes(msg); /*将字符串转化成byte数组输出*/ localSocket.Send(bys); /*向服务器端发送数据*/ while (msg != exit); /*当输入exit自愿断开连接*/ /*禁止下次数据读取和写入 参数:SocketShutdown.Receive禁止下次数据读取SocketShutdown.Send禁止下次数据写入*/ localSocket.Shutdown(SocketShutdown.Both); /*在关闭客户端 Socket*/ localSocket.Close(); 结果验证v分别启动服务器端和客户端程序,在客户端输入分别启动服务器端和客户端程序,在客户端输入hello Sever,按回车键,服务端中显示客户端所发送的消息,按回车键,服务端中显示客户端所发送的消息,如图如图6-13所示。所示。图6-13 客户端向服务端发送数据感谢观看THANKYOU Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.PleasePleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.text,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号