C#服务端与客户端连接实现浅析

C#服务端与客户端连接实现的时间性:当服务器开始对端口侦听之后,便可以创建客户端与它建立连接。这一步是通过在客户端创建一个TcpClient的类型实例完成。每创建一个新的TcpClient便相当于创建了一个新的套接字Socket去与服务端通信,.Net会自动为这个套接字分配一个端口号,上面说过,TcpClient类不过是对Socket进行了一个包装。创建TcpClient类型实例时,可以在构造函数中指定远程服务器的地址和端口号。这样在创建的同时,就会向远程服务端发送一个连接请求(“握手”),一旦成功,则两者间的连接就建立起来了。也可以使用重载的无参数构造函数创建对象,然后再调用Connect()方法,在Connect()方法中传入远程服务器地址和端口号,来与服务器建立连接。

创新互联建站公司2013年成立,是专业互联网技术服务公司,拥有项目网站制作、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元王屋做网站,已为上家服务,为王屋各地企业和个人服务,联系电话:18980820575

这里需要注意的是,不管是使用有参数的构造函数与服务器连接,或者是通过Connect()方法与服务器建立连接,都是同步方法(或者说是阻塞的,英文叫block)。它的意思是说,客户端在与服务端连接成功、从而方法返回,或者是服务端不存、从而抛出异常之前,是无法继续进行后继操作的。这里还有一个名为BeginConnect()的方法,用于实施异步的连接,这样程序不会被阻塞,可以立即执行后面的操作,这是因为可能由于网络拥塞等问题,连接需要较长时间才能完成。网络编程中有非常多的异步操作,凡事都是由简入难,关于异步操作,我们后面再讨论,现在只看同步操作。

创建一个新的控制台应用程序项目,命名为ClientConsole,它是我们的客户端,然后添加下面的代码,创建与服务器的连接:

C#服务端与客户端连接实现实例:

 
 
 
  1. class Client {  
  2. static void Main(string[] args) {  
  3.  
  4. Console.WriteLine("Client Running ...");  
  5. TcpClient client = new TcpClient();  
  6. try {  
  7. client.Connect("localhost", 8500);  // 与服务器连接  
  8. } catch (Exception ex) {  
  9. Console.WriteLine(ex.Message);  
  10. return;  
  11. }  
  12. // 打印连接到的服务端信息  
  13. Console.WriteLine("Server Connected!{0} --> {1}",  
  14. client.Client.LocalEndPoint, client.Client.RemoteEndPoint);  
  15.  
  16. // 按Q退出  
  17. }  
  18. }//C#服务端与客户端连接实现 

上面带代码中,我们通过调用Connect()方法来与服务端连接。随后,我们打印了这个连接消息:本机的Ip地址和端口号,以及连接到的远程Ip地址和端口号。TcpClient的Client属性返回了一个Socket对象,它的LocalEndPoint和RemoteEndPoint属性分别包含了本地和远程的地址信息。先运行服务端,再运行这段代码。可以看到两边的输出情况如下:

 
 
 
  1. // 服务端:  
  2. Server is running ...  
  3. Start Listening ...  
  4.  
  5. // 客户端:  
  6. Client Running ...  
  7. Server Connected!127.0.0.1:4761 --> 127.0.0.1:8500 

我们看到客户端使用的端口号为4761,上面已经说过,这个端口号是由.NET随机选取的,并不需要我们来设置,并且每次运行时,这个端口号都不同。再次打开“命令提示符”,输入“netstat -a”,可以看到下面的C#服务端与客户端连接实现实例输出:

 
 
 
  1. TCPjimmy:8500 0.0.0.0:0      LISTENING  
  2. TCPjimmy:8500 localhost:4761 ESTABLISHED  
  3. TCPjimmy:4761 localhost:8500 ESTABLISHED 

从这里我们可以得出几个重要信息:1、端口8500和端口4761建立了连接,这个4761端口便是客户端用来与服务端进行通信的端口;2、8500端口在与客户端建立起一个连接后,仍然继续保持在监听状态。这也就是说一个端口可以与多个远程端口建立通信,这是显然的,大家众所周之的HTTP使用的默认端口为80,但是一个Web服务器要通过这个端口与多少个浏览器通信啊。

C#服务端与客户端连接实现的情况就向你介绍到这里,希望对你了解和学习C#服务端与客户端连接实现有所帮助。

【编辑推荐】

  1. C#异步传输字符串服务端的实现
  2. C#异步传输字符串客户端的实现
  3. C#网络编程基本概念TCP浅析
  4. C#网络聊天程序三大模式浅析
  5. C#服务端端口侦听浅析

分享标题:C#服务端与客户端连接实现浅析
本文网址:http://www.shufengxianlan.com/qtweb/news12/132712.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联