C#服务端与客户端通信浅析

开发 后端
C#服务端与客户端通信的建立是如何的呢?服务端的程序如何知道已经与一个客户端建立起了连接?那么本文就向你介绍这方面的内容。

C#服务端与客户端通信的建立:上面服务端、客户端的代码已经建立起了连接,这通过使用“netstat -a”命令,从端口的状态可以看出来,但这是操作系统告诉我们的。那么我们现在需要知道的就是:服务端的程序如何知道已经与一个客户端建立起了连接?

服务器端开始侦听以后,可以在TcpListener实例上调用AcceptTcpClient()来获取与一个客户端的连接,它返回一个TcpClient类型实例。此时它所包装的是由服务端去往客户端的Socket,而我们在客户端创建的TcpClient则是由客户端去往服务端的。这个方法是一个同步方法(或者叫阻断方法,block method),意思就是说,当程序调用它以后,它会一直等待某个客户端连接,然后才会返回,否则就会一直等下去。这样的话,在调用它以后,除非得到一个客户端连接,不然不会执行接下来的代码。一个很好的类比就是Console.ReadLine()方法,它读取输入在控制台中的一行字符串,如果有输入,就继续执行下面代码;如果没有输入,就会一直等待下去。

C#服务端与客户端通信实现实例:

  1. class Server {  
  2. static void Main(string[] args) {  
  3. Console.WriteLine("Server is running ... ");  
  4. IPAddress ip = new IPAddress(  
  5. new byte[] { 127, 0, 0, 1 });  
  6. TcpListener listener = new TcpListener(ip, 8500);  
  7.  
  8. listener.Start();   // 开始侦听  
  9. Console.WriteLine("Start Listening ...");  
  10.  
  11. // 获取一个连接,中断方法  
  12. TcpClient remoteClient = listener.AcceptTcpClient();  
  13.  
  14. // 打印连接到的客户端信息  
  15. Console.WriteLine("Client Connected!{0} <-- {1}",  
  16.    remoteClient.Client.LocalEndPoint,  
  17.  remoteClient.Client.RemoteEndPoint);  
  18.  
  19. // 按Q退出  
  20. }  
  21. }  

运行这段C#服务端与客户端通信实现代码,会发现服务端运行到listener.AcceptTcpClient()时便停止了,并不会执行下面的Console.WriteLine()方法。为了让它继续执行下去,必须有一个客户端连接到它,所以我们现在运行客户端,与它进行连接。简单起见,我们只在客户端开启一个端口与之连接:

  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,   
  15. client.Client.RemoteEndPoint);  
  16.  
  17. // 按Q退出  
  18. }  
  19. }  

此时C#服务端与客户端通信实现,服务端、客户端的输出分别为:

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

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

【编辑推荐】

  1. C#网络编程基本概念TCP浅析
  2. C#网络聊天程序三大模式浅析
  3. C#服务端端口侦听浅析
  4. C#服务端与客户端连接实现浅析
  5. C#服务端与客户端连接实现浅谈
责任编辑:仲衡 来源: 博客园
相关推荐

2009-08-21 16:14:52

服务端与客户端通信

2009-08-21 15:36:41

服务端与客户端

2009-08-21 15:54:40

服务端与客户端

2009-08-21 15:22:56

端口侦听

2010-03-18 17:47:07

Java 多客户端通信

2011-09-09 09:44:23

WCF

2023-03-06 08:01:56

MySQLCtrl + C

2022-01-05 08:03:23

C#通信Rest

2009-08-21 17:48:43

C#网络编程

2009-08-21 17:53:25

C#网络编程客户端程序

2009-07-15 17:33:08

Swing客户端

2009-08-06 17:12:13

C# WebServi

2009-08-21 16:37:54

C#客户端程序

2024-03-06 14:58:52

客户端微服务架构

2010-11-19 14:22:04

oracle服务端

2023-04-03 08:13:05

MySQLCtrl + C

2020-03-19 08:00:00

客户端KubernetesAPI

2009-08-21 16:27:44

C#服务端程序

2015-01-13 10:32:23

RestfulWeb框架

2009-08-07 13:55:35

Java客户端类调用C# WebServi
点赞
收藏

51CTO技术栈公众号