C#中TCP通信的实现示例

 更新时间:2024年11月22日 09:24:14   作者:挖石油的问天  
本文介绍了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通信内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • c# 通过WinAPI播放PCM声音

    c# 通过WinAPI播放PCM声音

    这篇文章主要介绍了c# 通过WinAPI播放PCM声音的方法,帮助大家更好的理解和使用c#编程语言,感兴趣的朋友可以了解下
    2020-12-12
  • C#数据结构之堆栈(Stack)实例详解

    C#数据结构之堆栈(Stack)实例详解

    这篇文章主要介绍了C#数据结构之堆栈(Stack),结合实例形式较为详细的分析了堆栈的原理与C#实现堆栈功能的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • C# 使用com获取Windows摄像头列表

    C# 使用com获取Windows摄像头列表

    本文主要介绍了C# 使用com获取Windows摄像头列表,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • word ppt excel文档转换成pdf的C#实现代码

    word ppt excel文档转换成pdf的C#实现代码

    这篇文章主要介绍了word ppt excel文档转换成pdf的C#实现代码,有需要的朋友可以参考一下
    2014-01-01
  • C#实现虚拟机快照回滚的完整方案

    C#实现虚拟机快照回滚的完整方案

    在 C# 中实现虚拟机快照的回滚(即“时间机器”功能),通常需要结合虚拟化平台的 API 或命令行工具,以下是基于常见虚拟化平台(如 VMware、VirtualBox、KVM)的 C# 实现方案,并结合知识库中的技术细节进行说明,需要的朋友可以参考下
    2025-08-08
  • C#创建缩略图操作类实例

    C#创建缩略图操作类实例

    这篇文章主要介绍了C#创建缩略图操作类,实例分析了C#创建缩略图的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C#实现根据实体类自动创建数据库表

    C#实现根据实体类自动创建数据库表

    本文主要介绍了C#通过自定义特性实现根据实体类自动创建数据库表的方法。具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • Unity实现喷漆效果

    Unity实现喷漆效果

    这篇文章主要为大家详细介绍了Unity实现喷漆效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • C#通过rabbitmq实现定时任务(延时队列)

    C#通过rabbitmq实现定时任务(延时队列)

    工作中经常会有定时任务的需求,常见的做法可以使用Timer、Quartz、Hangfire等组件,本文使用C#通过rabbitmq实现定时任务(延时队列),感兴趣的可以了解一下
    2021-05-05
  • Unity使用摄像机实现望远镜效果

    Unity使用摄像机实现望远镜效果

    这篇文章主要为大家详细介绍了Unity摄使用像机实现望远镜效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11

最新评论