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

开发 后端
C#服务端与客户端连接实现需要注意什么呢?C#服务端与客户端连接实现具体的步骤等等,本文向你一一介绍。

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

这里需要注意的是,不管是使用有参数的构造函数与服务器连接,或者是通过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#服务端端口侦听浅析
责任编辑:仲衡 来源: 博客园
相关推荐

2009-08-21 15:59:22

服务端与客户端通信

2009-08-21 15:54:40

服务端与客户端

2009-08-21 16:14:52

服务端与客户端通信

2009-08-21 15:22:56

端口侦听

2009-08-21 17:53:25

C#网络编程客户端程序

2011-09-09 09:44:23

WCF

2023-03-06 08:01:56

MySQLCtrl + C

2009-08-21 16:37:54

C#客户端程序

2009-08-21 17:48:43

C#网络编程

2009-08-21 16:27:44

C#服务端程序

2009-08-06 17:12:13

C# WebServi

2009-07-15 17:33:08

Swing客户端

2021-10-19 08:58:48

Java 语言 Java 基础

2022-09-05 14:36:26

服务端TCP连接

2010-03-18 17:47:07

Java 多客户端通信

2010-02-24 16:39:27

WCF客户端处理

2010-11-19 14:22:04

oracle服务端

2024-03-06 14:58:52

客户端微服务架构

2020-03-19 08:00:00

客户端KubernetesAPI

2022-01-05 08:03:23

C#通信Rest
点赞
收藏

51CTO技术栈公众号