如何实现C#服务端与客户端连接

发布时间:2021-11-23 23:16:41 作者:柒染
来源:亿速云 阅读:278

今天就跟大家聊聊有关如何实现C#服务端与客户端连接,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

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

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

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

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

class Client {  static void Main(string[] args) {   Console.WriteLine("Client Running ...");  TcpClient client = new TcpClient();  try {  client.Connect("localhost", 8500);  // 与服务器连接  } catch (Exception ex) {  Console.WriteLine(ex.Message);  return;  }  // 打印连接到的服务端信息  Console.WriteLine("Server Connected!{0} --> {1}",  client.Client.LocalEndPoint, client.Client.RemoteEndPoint);   // 按Q退出  }  }//C#服务端与客户端连接实现

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

// 服务端:  Server is running ...  Start Listening ...   // 客户端:  Client Running ...  Server Connected!127.0.0.1:4761 --> 127.0.0.1:8500

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

TCPjimmy:8500 0.0.0.0:0      LISTENING  TCPjimmy:8500 localhost:4761 ESTABLISHED  TCPjimmy:4761 localhost:8500 ESTABLISHED

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

看完上述内容,你们对如何实现C#服务端与客户端连接有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. 怎么在Java中通过socket客户端保持连接服务端
  2. 服务端与客户端怎么利用socket传文件

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:C#如何实现OLE DB的DB2开发

下一篇:c语言怎么实现含递归清场版扫雷游戏

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》