《CSocket网络编程》PPT课件.ppt
《《CSocket网络编程》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《CSocket网络编程》PPT课件.ppt(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C#Socket网络编程 C#下实现套接字(Sockets)编程的一些基本知识 套接字基本概念 套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。可以将套接字看作不同主机间的进程进可以将套接字看作不同主机间的进程进行双向通信的端点行双向通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。各种进程使用这个相同的域互相之间用Internet协议簇来进行通信。套接字分类 套接字可以根据通信性质分类,
2、这种性质对于用户是可见的。应用程序一般仅在同一类的套接字间进行通信。不过只要底层的通信协议允许,不同类型的套接字间也照样可以通信。套接字有两种不同的类型:流套接字流套接字和数据报套接字数据报套接字。套接字工作原理 套接字可以像Stream流一样被视为一个数据通道,这个通道架设在客户端应用程序和服务器端程序之间,数据的读取(接收)和写入(发送)均针对这个通道来进行。因此要通过网络进行通信,就至少需要一对套接字,其中一个运行于客户端,称之为客户端套接字(ClientSocket),另一个运行于服务器端,称之为服务器端套接字(ServerSocket)。当创建了这两个套接字对象之后,将这两个套接字连
3、接起来就可以实现数据传送了。根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听服务器监听,客户端请求客户端请求 ,连接确认连接确认。TcpClient类和TcpListener类l为了简化编程,.NET提供面向TCP编程的相关类,主要包括TcpClient和TcpListener。这些类比位于底层的Socket类提供了更高层次的抽象,它们封装TCP套接字的创建,不需要处理连接的细节。这样,在编写面向TCP的网络应用程序时便可以优先尝试使用TcpClient和TCPListener,而不是直接使用Socket。l1、TcpClient类lTcpClie
4、nt类为TCP网络服务提供客户端连接,它构建于Socket类之上,以提供较高级别的TCP服务,即提供了通过网络连接、发送和接收数据的简单方法。用于在同步阻止模式下通过网络来连接、发送和接收流数据。另外,通过与NetworkStream对象的关联,使得用户可以通过流操作方式实现对网络连接状态下数据的发送和接收。l(1)创建TcpClient实例lTcpClient类有4种构造函数的重载形式,分别对应4种创建实例的方法。l1)TcpClient(),这种不带任何参数的构造函数将使用本机默认的IP地址并将使用默认的通信端口号0。当然,如果本机不止一个IP地址时将无法选择使用。l2)TcpClient
5、(AddressFamily),使用指定的地址族初始化TcpClient类的新实例。l3)TcpClient(IPEndPoint),即使用本机IPEndPoint创建TcpClient的实例。其中IPEndPoint将网络端点表示为IP地址和端口号,用于指定在建立远程主机连接时所使用的本地网络接口IP地址和端口号。l4)TcpClient(String,lnt32),初始化TcpClient类的新实例并连接到指定主机上的指定端口。因此,在TcpClient的构造函数中,如果没有指定远程主机名和端口号,它只是用来实例化TcpClient同时实现与本地IP地址和Port端口的绑定。l(2)与远程
6、主机建立连接l如果在TcpClient的实例化过程中没有实现与远程主机的连接,则可以通过Connect方法来实现与指定远程主机的连接。Connect方法使用指定的主机名和端口号将客户端连接到远程主机,其使用方法如下。l1)Connect(IPEndPoint),使用指定的远程网络终结点将客户端连接到远程TCP主机。l2)Connect(IPAddress),使用指定的IP地址和端口号将客户端连接到远程TCP主机。l 3)Connect(IPAddress,Int32),使用指定的IP地址和端口号将客户端连接到远程TCP主机。l 4)Connect(String,Int32),使用指定的主机名和
7、端口号将客户端连接到指定主机上的指定端口。l如下代码段描述了TcpClient实例的创建以及与指定远程主机的连接过程。lm_client=new TcpClient();lm_client.Connect(m_servername,m_port);(3)利用NetworkStream实例发送和接收数据lTcpClient类创建在Socket之上,提供了更高层次的TCP服务抽象,特别是在网络数据的发送和接收方面,TcpClient使用标准的Stream流处理技术,通过使用NetworkStream实例的读写操作来实现网络数据的接收和发送,因此更加方便直观。但NetworkStream与普通流St
8、ream有所不同,NetworkStream没有当前位置概念,不支持查找和对数据流的随机访问。l该方法首先通过TcpClient.GetStream来返回NetworkStream实例,进而利用所获取的NetworkStream实例的读写方法Write和Read来发送和接收数据,其实现代码如下所示。lrs=new StreamReader(m_client.GetStream();/获取接收数据的网络流实例lws=m_client.GetStream();/获取发送数据的网络流实例lm retumData-rs.ReadLine();/接收网络数据lConsole.WriteLine(m_ r
9、eturnData);lws.Write(data,0,data.Length);/向网络发送数据l(4)关闭TCP套接字l 在与服务器完成通信后,应该调用Close()方法释放所有的资源。lm_client.Close();2、TcpListener类lTcpClient类实现了客户端编程抽象,因此构建客户端网络应用程序便可以直接使用TcpClient取代Socket,更加方便易用。同样,对于服务器端应用程序的构建,C#提供了TcpListener类。该类也是构建于Socket之上,提供了更高抽象级别的TCP服务,使得程序员能更方便地编写服务器端应用程序。TcpListener通过实例创建过
10、程完成与本地网络接口的绑定,并由所创建的实例调用Start方法启动侦听;当侦听到客户端应用程序的连接请求后,根据客户端应用程序的不同请求方式,可以通过AcceptTcpClient方法接受传入的连接请求并创建TcpClient实例以处理请求,或者通过AcceptSocket方法接受传入的连接请求并创建Socket实例以处理请求,并由所创建的TcpClient实例或Socket实例完成与客户端应用程序的网络数据传输。最后,需要使用Stop关闭用于侦听传入连接的Socket,同时也必须关闭从AcceptSocket或AcceptTcpClient返回的任何实例,以释放相关资源。l(1)创建TcpL
11、istener实例lTcpListener类提供了3种构造函数的重载形式来创建TcpListener卖例。l1)TcpListener(port);指定本机端口l2)public TcpListener(IPEndPoint)指定本机终结点l3)public TcpListener(IPAddress,port)指定本机IP地址及端口l分别根据指定的侦听端口、IPEndPoint对象(包含了IP地址和端口号)、IPAddress对象和端口号来创建TcpListener实例,并且实现与默认端口或指定地址和端口的绑定,如下代码所示。lm_host=IPAddress.Parse(m_serverI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CSocket网络编程 CSocket 网络 编程 PPT 课件
限制150内