Visual C_.NET案例教程 教学课件 ppt 作者 翁健红 7-12 第11章

上传人:E**** 文档编号:89351492 上传时间:2019-05-23 格式:PPT 页数:103 大小:1.04MB
返回 下载 相关 举报
Visual C_.NET案例教程 教学课件 ppt 作者 翁健红 7-12 第11章_第1页
第1页 / 共103页
Visual C_.NET案例教程 教学课件 ppt 作者 翁健红 7-12 第11章_第2页
第2页 / 共103页
Visual C_.NET案例教程 教学课件 ppt 作者 翁健红 7-12 第11章_第3页
第3页 / 共103页
Visual C_.NET案例教程 教学课件 ppt 作者 翁健红 7-12 第11章_第4页
第4页 / 共103页
Visual C_.NET案例教程 教学课件 ppt 作者 翁健红 7-12 第11章_第5页
第5页 / 共103页
点击查看更多>>
资源描述

《Visual C_.NET案例教程 教学课件 ppt 作者 翁健红 7-12 第11章》由会员分享,可在线阅读,更多相关《Visual C_.NET案例教程 教学课件 ppt 作者 翁健红 7-12 第11章(103页珍藏版)》请在金锄头文库上搜索。

1、第11章 网络通信与多线程,11.1 聊天室项目介绍 11.2 网络编程 11.3 多线程技术 11.4 聊天室实现 11.5 习题,聊天室系统具有多人聊天的功能,该系统运行时只有一个服务器,处理各客户端的信息,可以有多个客户端,客户端需要先登录服务器。运行效果如图11-1、图11-2、图11-3、图11-4 所示。,11.1 聊天室项目介绍,图11-1 服务器启动,图11-2 客户端登录,图11-3 客户端聊天,图11-4 服务器显示当前用户,11.2.1 IP地址 互联网上尽管连接了无数的服务器和计算机,但它们并不是处于杂乱无章的无序状态,而是每一个主机都有唯一的地址,作为该主机在Inte

2、rnet上的唯一标志,这个标志被称为IP地址。IP地址是四组由圆点分割的数字组成的,其中每一组数字都在0255之间,如:172.16.250.250就是一个主机服务器的IP地址,127.0.0.1是本地回环IP地址。,11.2 网 络 编 程,11.2.2 端口 计算机与网络通常只有一个连接点。但一个计算机上有许多应用,系统该如何知道接收到的数据应当发给哪一个应用呢?解决这个问题的方法是利用端口来标识应用,端口是一个16位的无符号整数,范围是065 535。 每个连接必须至少绑定一个端口,绑定的意思是把某一端口分配给给定的应用使用。应用向系统注册该端口,此后发往该端口的数据都被送到它绑定的应用

3、程序的Socket。,11.2.3 TCP/IP TCP是Transmission Control Protocol(传输控制协议)的简称,是TCP/IP体系中面向连接的运输层协议,在网络中提供全双工的和可靠的服务。传输控制协议(TCP)是有连接和面向数据流的、可靠的点对点通信协议。TCP通信类似打电话,你(客户端)可能想给朋友(服务器端)打电话,通过拨你朋友的电话号码,建立一条点对点的连接通道。如果你的朋友在家,他将拿起电话和你通话。连接一直会持续,直到你们通话结束。,TCP协议最主要的特点是: (1) 是一种基于连接的协议。 (2) 保证数据准确到达。 (3) 保证各数据到达的顺序与数据发

4、出的顺序相同。 (4) 传输的数据无消息边界。 TCP协议的优点是可靠,但为此要付出额外的带宽。如果传输的数据比较重要,则要用TCP协议,如果不很重要,可选用UDP协议。,11.2.4 套接字 所谓套接字(Socket),是一种独立于协议的网络编程接口,在OSI模型中,主要集中在会话层和传输层,可以将套接字看做不同主机间的进程进行双向通信的端点。在 .NET FrameWork SDK中,Socket类提供了对套接字的支持,该类位于名称空间System.Net.Sockets之中。Socket类提供了一整套属性和方法实现了对端口绑定、监听以及连接、数据传输等服务。 套接字有两种不同的类型:流套

5、接字和数据报套接字。要通过互联网进行通信,至少需要一对套接字:一个运行于客户端,称为ClientSocket;另一个运行于服务器端,称为ServerSocket。,套接字处理数据的基本模式有两种:同步套接字和异步套接字。 同步套接字:通过Socket进行连接、接收、发送操作时,客户机或服务器在接收到对方响应前会处于阻塞状态。它适用于数据处理不太多的场合。 异步套接字:在通过Socket进行连接、接收、发送操作时,客户机或服务器不会处于阻塞方式,而是利用callback机制进行连接、接收和发送处理,这样就可以在调用发送或接收的方法后直接返回,并继续执行下面的程序。,11.2.5 TcpClien

6、t与TcpListener类 1. TcpClient类 (1) TcpClient()。该构造函数创建一个默认的TcpClient对象,该对象自动选择客户端尚未使用的IP地址和端口号。创建该对象后,即可用Connect方法与服务器端进行连接。 例如: TcpClient tcpClient=new TcpClient(); tcpClient.Connect(““, 51888);,(2) TcpClient(string hostname,int port)。该构造函数直接指定服务器端域名和端口号,而且不需使用Connect方法。客户端主机的IP地址和端口号则自动选择。例如: TcpCli

7、ent tcpClient=new TcpClient(““, 51888);,2. TcpListener类 TcpListener类用于监听和接收传入的连接请求。该类的构造函数如下: (1) TcpListener(IPEndPoint iep)。该构造函数通过IPEndPoint类型的对象在指定的IP地址与端口监听客户端连接请求。 (2) TcpListener(IPAddress localAddr, int port)。建立一个TcpListener对象,在参数中直接指定本机IP地址和端口,并通过指定的本机IP地址和端口号监听传入的连接请求。,在同步工作方式下,TcpListener

8、类对应的方法如下: (1) AcceptTcpClient:在同步阻塞方式下获取并返回一个可以用来接收和发送数据的封装了Socket的TcpClient对象。 (2) AcceptSocket:在同步阻塞方式下获取并返回一个用来接收和发送数据的套接字对象。 (3) Start:启动监听,其构造函数为 public void Start(int backlog); 整型参数backlog为请求队列的最大长度,即最多允许的客户端连接个数。 (4) Stop:停止监听请求,构造函数为 public void Stop();,11.2.6 使用NetworkStream对象发送和接收数据 服务器端与客

9、户端双方建立连接后,就可以发送数据进行通信。C#在System .Net.Sockets名称空间中提供了NetworkStream类,专门用于通过网络套接字发送和接收数据。 NetworkStream类支持对网络数据的同步或异步访问,可被视为在数据来源端和接收端之间架设了一个数据通道。对于NetworkStream流,写入操作是指从来源端内存缓冲区到网络上的数据传输;读取操作是从网络上到接收端内存缓冲区(如字节数组)的数据传输。 构造NetworkStream对象的常用形式为 NetWorkStream networkStream=new NetworkStream(socket);,创建了N

10、etworkStream对象后,就可以直接使用该对象接收和发送数据。例如: NetworkStream networkStream = new NetworkStream(clientSocket ); /发送数据 string message = “发送的数据“; byte sendbytes = System.Text.Encoding.UTF8.GetBytes(message ); networkStream.Write(sendbytes ,0, sendbytes.Length ); /接收数据 byte readbytes = new byte1024; int i = netw

11、orkStream.Read(readbytes, 0, readbytes.Length);,11.2.7 同步TCP编程 在同步TCP应用编程中,发送、接收和监听语句均采用阻塞方式工作。使用同步TCP编写服务器端程序的一般步骤为: (1) 创建一个包含采用的网络类型、数据传输类型和协议类型的本地套接字对象,并将其与服务器的IP地址和端口号绑定。此过程可以通过Socket类或者TcpListener类完成。 (2) 在指定的端口进行监听,以便接受客户端连接请求。 (3) 一旦接受了客户端的连接请求,就根据客户端发送的连接信息创建与该客户端对应的Socket对象或者TcpClient对象。,(

12、4) 根据创建的Socket对象或者TcpClient对象,分别与每个连接的客户进行数据传输。 (5) 根据传送信息情况确定是否关闭与对方的连接。 使用同步TCP编写客户端程序的一般步骤为: (1) 创建一个包含传输过程中采用的网络类型、数据传输类型和协议类型的Socket对象或TcpClient对象。 (2) 使用Connect方法与远程服务器建立连接。 (3) 与服务器进行数据传输。 (4) 完成工作后,向服务器发送关闭信息,并关闭与服务器的连接。,11.2.8 一对一通信 下面利用TCP/IP技术实现一对一的通信,即一个客户端与服务器通信。使用时首先运行服务器,如图11-5所示,服务器处

13、于等待客户机连接的状态;接着运行客户机程序,客户机连接上服务器,并进行登录,如图11-6所示。登录后可以向服务器发送信息,如图11-7所示。服务器接收客户端的信息并显示出来,如图11-8所示。,图11-5 服务器启动,图11-6 客户端登录,图11-7 客户端向服务器发送信息,图11-8 服务器接收客户端信息,(1) 建立一个客户端对应的Windows项目,命名为ChatClient;添加一个登录页面Login.cs,客户端登录窗体如图11-9所示。,图11-9 登录窗体设计,代码如下: using System; using System.Collections.Generic; using

14、 System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; namespace myChatClient public partial class Login : Form ,/tcpClient是Login的一个公共属性,它用于创建客户端套接字 public TcpClient tcpClient; /Alias是Login的一个公共属性,它向

15、ChatClient窗体传送用户名 public string Alias = “; public Login() InitializeComponent(); private void btnLogin_Click(object sender, EventArgs e) txtAlias.Text = txtAlias.Text.Trim(); if (txtAlias.Text.Length = 0) ,MessageBox.Show(“请输入您的昵称!“, “提示信息“, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtAlias.Focus(); return; try /创建一个客户端套接字,它是Login的一个公共属性,将被传递给ChatClient窗体 tcpClient = new TcpClient(); /向指定的IP地址的服务器发出连接请求,服务器地址为127.0.0.1,端口号为1234,tcpClient.Connect(IPAddress.Parse(“127.0.0.1“), Int32.Parse(“1234“); Alias = txtAlias.Text; ca

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号