C#中TCP通信的实现示例
1.TCP通信的示例代码
TCP通信过程中将通信的双方分为服务端和客户端,TCP通信的客户端和服务端的主要区别在于它们的角色和行为:
服务端:
- 负责监听特定的端口和IP地址。
- 等待客户端的连接请求。
- 接受连接后,可以与客户端进行数据交换。
客户端:
- 发起连接请求。
- 连接到服务端后,进行数据交换。
服务端代码示例:
using System; using System.Net; using System.Net.Sockets; using System.Text; class TcpServer { static void Main() { // 创建TCP监听器 TcpListener server = new TcpListener(IPAddress.Any, 12345); // 启动监听 server.Start(); Console.WriteLine("服务器正在监听端口 12345..."); // 接受客户端连接 TcpClient client = server.AcceptTcpClient(); Console.WriteLine("客户端连接成功!"); // 获取网络流 NetworkStream stream = client.GetStream(); // 读取客户端发送的数据 byte[] buffer = new byte[256]; int bytesRead; while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) != 0) { string message = Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine("收到消息: " + message); // 向客户端发送回复消息 byte[] response = Encoding.UTF8.GetBytes("服务器已收到消息"); stream.Write(response, 0, response.Length); } // 关闭连接 client.Close(); server.Stop(); } }
客户端代码示例:
using System; using System.Net; using System.Net.Sockets; using System.Text; class TcpClientExample { static void Main() { // 创建TCP客户端 TcpClient client = new TcpClient(); // 连接到服务端(localhost:12345) client.Connect("127.0.0.1", 12345); Console.WriteLine("已连接到服务器"); // 获取网络流 NetworkStream stream = client.GetStream(); // 发送消息到服务端 string message = "你好,服务器!"; byte[] buffer = Encoding.UTF8.GetBytes(message); stream.Write(buffer, 0, buffer.Length); Console.WriteLine("已发送消息: " + message); // 接收服务端的回复 buffer = new byte[256]; int bytesRead = stream.Read(buffer, 0, buffer.Length); string response = Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine("收到回复: " + response); // 关闭连接 client.Close(); } }
实验结果:
2.上位机与仪器建立连接时的角色选择
在上位机(Host Computer)和下位机(通常是嵌入式设备或硬件设备)通信的场景中,通常上位机程序是指与硬件进行通信的客户端程序。根据这个角色,通常上位机程序会被构建为客户端。
为什么上位机程序通常作为客户端构建:
1.主动发起连接: 上位机程序通常会主动发起与下位机设备的连接,发送请求,读取设备状态或控制设备工作。相比之下,下位机设备通常只是等待来自上位机的连接请求,因此它们的角色通常是服务器。
2.监控与控制: 上位机一般负责监控多个下位机设备,获取数据,发出控制指令,或者对设备进行配置和调整。它们通常是用户操作的地方。
3.功能需求: 上位机程序通常需要提供丰富的用户界面(UI)、数据处理能力、报告生成和数据存储等功能。这些功能要求它作为客户端与服务器(即下位机)进行通信,进行数据收发。
到此这篇关于C#中TCP通信的实现示例的文章就介绍到这了,更多相关C# TCP通信内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
.NET中的async和await关键字使用及Task异步调用实例
这篇文章主要介绍了.NET中的async和await关键字使用及Task异步调用实例,本文还包含了取消执行和显示进度的例子,需要的朋友可以参考下2014-07-07非常实用的C#字符串操作处理类StringHelper.cs
这篇文章主要为大家详细介绍了非常实用的C#字符串操作处理类StringHelper.cs,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-07-07
最新评论