C#基于TCP协议的服务器端和客户端通信编程的基础教程

C#基于TCP协议的服务器端和客户端通信编程的基础教程

1. TCP协议简介

TCP协议是面向连接的、可靠的传输层网络协议,常用于提供高可靠性的通信服务,其优点包括可靠性高、传输效率稳定等。

2. C#基于TCP协议的服务器端和客户端通信编程

编写C#程序实现TCP通信需要遵循以下基本步骤:

  1. 创建服务器端程序和客户端程序的套接字(Socket)
  2. 设置服务器端程序的本地IP地址和端口
  3. 启动服务器端的监听服务
  4. 等待客户端连接服务器
  5. 客户端连接成功后,建立连接并发送消息

以下是一些示例代码,可以帮助理解以上步骤。

示例1:服务器端代码

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class TcpServer
{
    static void Main(string[] args)
    {
        // 创建服务器套接字并设置本地IP地址和端口
        TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.1"), 8888);

        // 启动服务器监听服务
        server.Start();
        Console.WriteLine("服务器已启动,等待客户端连接...");

        // 等待客户端连接
        TcpClient client = server.AcceptTcpClient();
        Console.WriteLine("客户端已连接");

        // 获取用于收发数据的数据流对象
        NetworkStream stream = client.GetStream();

        // 循环接收客户端发送的消息
        while (true)
        {
            // 获取客户端发送的消息
            byte[] buffer = new byte[1024];
            int count = stream.Read(buffer, 0, buffer.Length);
            string message = Encoding.Default.GetString(buffer, 0, count);

            // 如果接收到的消息为空,说明客户端已关闭连接,退出循环
            if (string.IsNullOrEmpty(message))
            {
                Console.WriteLine("客户端已关闭连接");
                break;
            }

            // 打印客户端发送的消息
            Console.WriteLine("收到客户端的消息:{0}", message);
        }

        // 关闭套接字和数据流对象
        stream.Close();
        client.Close();
        server.Stop();
    }
}

示例2:客户端代码

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class TcpClient
{
    static void Main(string[] args)
    {
        // 创建客户端套接字
        TcpClient client = new TcpClient();

        // 连接服务器
        client.Connect(IPAddress.Parse("127.0.0.1"), 8888);
        Console.WriteLine("已连接服务器");

        // 获取用于收发数据的数据流对象
        NetworkStream stream = client.GetStream();

        // 循环发送消息
        while (true)
        {
            // 读取用户输入的消息
            Console.Write("请输入要发送的消息:");
            string message = Console.ReadLine();

            // 如果用户未输入消息,退出循环
            if (string.IsNullOrEmpty(message))
            {
                Console.WriteLine("退出程序");
                break;
            }

            // 将消息转换为字节数组并发送给服务器
            byte[] buffer = Encoding.Default.GetBytes(message);
            stream.Write(buffer, 0, buffer.Length);
        }

        // 关闭套接字和数据流对象
        stream.Close();
        client.Close();
    }
}

3. 总结

本文介绍了C#基于TCP协议的服务器端和客户端通信编程的基础教程,涵盖了TCP协议简介、编写C#程序实现TCP通信的基本步骤以及两个具体示例代码。开发人员可以根据需要自行扩展和优化相关代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#基于TCP协议的服务器端和客户端通信编程的基础教程 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • 在.NET Core控制台程序中如何使用依赖注入详解

    在.NET Core控制台程序中如何使用依赖注入详解 在.NET Core控制台程序中,您可以使用内置的依赖注入(DI)容器来管理对象和依赖关系。以下是使用.NET Core控制台程序中依赖注入(DI)的步骤: 在Program.cs文件中,创建一个HostBuilder对象,并使用ConfigureServices方法将服务添加到DI容器中。例如,使用Ad…

    C# 2023年5月17日
    00
  • 用C#编写ActiveX控件(三)

    那么让我们详细讲解一下”用C#编写ActiveX控件(三)”的完整攻略。 什么是ActiveX控件 ActiveX是一种软件组件技术,它允许应用程序在多个不同的操作系统和应用程序之间共享代码。ActiveX控件是一种可以在Web浏览器中嵌入的交互式控件。 为什么用C#编写ActiveX控件 C#是一种非常流行的编程语言,它有着丰富的库和框架,同时也具有强大的…

    C# 2023年6月7日
    00
  • C# 将数据库SqlServer数据绑定到类中的过程详解

    标题 C# 将数据库 SqlServer 数据绑定到类中的过程详解 简介 本篇攻略主要介绍 C# 中如何将数据库 SqlServer 数据绑定到类中,从而方便数据操作和管理。 过程分析 3.1 使用 DataSet 进行绑定 在 C# 中,使用 DataSet 对象可以将数据库中的数据绑定到类中。具体操作步骤如下: (1)建立 C# 项目,并在项目中添加 S…

    C# 2023年6月2日
    00
  • 从ASP.NET Core3.1迁移到5.0的方法

    从 ASP.NET Core 3.1 迁移到 5.0 可以带来更好的性能、更好的开发体验和更多的新功能。以下是从 ASP.NET Core 3.1 迁移到 5.0 的完整攻略: 步骤一:备份项目 在进行迁移前,需要备份 ASP.NET Core 3.1 项目。可以将项目文件复制到另一个目录或者使用版本控制系统来备份项目。 步骤二:更新 .NET Core S…

    C# 2023年5月17日
    00
  • C#实例代码之抽奖升级版可以经表格数据导入数据库,抽奖设置,补抽

    C#实例代码之抽奖升级版 本文将介绍一个C#实例代码,实现抽奖升级版,包括表格数据导入数据库、抽奖设置和补抽功能。 表格数据导入数据库 在抽奖升级版中,我们需要将抽奖名单导入数据库中,以便更好地管理和查询数据。以下是一个将表格数据导入数据库的示例: using System.Data; using System.Data.SqlClient; using E…

    C# 2023年5月15日
    00
  • 亲自教你实现栈及C#中Stack源码分析

    亲自教你实现栈及C#中Stack源码分析 栈的定义 栈是一种具有特殊行为的线性数据结构,栈中的元素遵循 LIFO(Last In First Out) 原则: 入栈(Push):在栈的顶部添加一个元素; 出栈(Pop):从栈的顶部移除一个元素; 取顶(Peek):获取栈顶元素,但不对栈进行操作; 判空(IsEmpty):判断栈中是否有元素。 栈的实现方式有两…

    C# 2023年6月1日
    00
  • c#显示当前在线人数示例

    下面是“c#显示当前在线人数示例”的完整攻略。 简介 在网站或应用程序的开发中,有时需要统计当前在线用户数。本文将展示如何使用C#编写代码来实现这一功能。 步骤 步骤1:设置计数器 为了记录当前在线用户数,我们需要设置一个计数器。我们可以使用Application对象的Application[“OnlineCount”]属性来实现这一点。 Applicati…

    C# 2023年6月7日
    00
  • ASP.NET Core 数据保护(Data Protection)上篇

    ASP.NET Core 数据保护(Data Protection)是一种用于保护数据的框架,它提供了一种简单的方法来加密和解密数据。本攻略将深入探讨ASP.NET Core 数据保护的实现,并提供两个示例说明。 1. 数据保护的基本原理 ASP.NET Core 数据保护的基本原理是使用密钥来加密和解密数据。密钥可以是对称密钥或非对称密钥。对称密钥是一种加…

    C# 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部