c# 网络编程之tcp

C# 网络编程之TCP

TCP是传输控制协议,是一种无连接的、可靠的、基于字节流的传输协议,它能够在网络上确保数据的可靠传输。在C#/.NET中,我们可以使用System.Net.Sockets命名空间下的TcpClient和TcpListener类来实现TCP网络编程。

TCP客户端

连接服务器

要建立一个TCP连接,需要指定服务器的IP地址和端口号,并使用TcpClient类创建一个TCP客户端对象。以下是一个连接服务器的示例代码:

using System;
using System.Net.Sockets;

class Program
{
    static void Main(string[] args)
    {
        // 服务器IP地址和端口号
        string serverIP = "192.168.0.1";
        int serverPort = 8888;

        // 创建TCP客户端对象
        TcpClient client = new TcpClient();

        try
        {
            // 连接服务器
            client.Connect(serverIP, serverPort);

            // 连接成功
            Console.WriteLine("连接服务器成功");
        }
        catch (Exception ex)
        {
            // 连接失败
            Console.WriteLine("连接服务器失败:" + ex.Message);
        }
        finally
        {
            // 释放TCP客户端资源
            client.Close();
        }
    }
}

发送数据

连接成功后,可以使用TcpClient对象的GetStream方法获取与服务器通信的网络流,然后使用流的Write方法向服务器发送数据。以下是一个发送数据的示例代码:

using System;
using System.Net.Sockets;

class Program
{
    static void Main(string[] args)
    {
        // 服务器IP地址和端口号
        string serverIP = "192.168.0.1";
        int serverPort = 8888;

        // 要发送的数据
        string data = "Hello World";

        // 创建TCP客户端对象
        TcpClient client = new TcpClient();

        try
        {
            // 连接服务器
            client.Connect(serverIP, serverPort);

            // 连接成功,发送数据
            NetworkStream stream = client.GetStream();

            byte[] buffer = System.Text.Encoding.UTF8.GetBytes(data);
            stream.Write(buffer, 0, buffer.Length);

            Console.WriteLine("已向服务器发送数据");
        }
        catch (Exception ex)
        {
            // 连接或发送失败
            Console.WriteLine("操作失败:" + ex.Message);
        }
        finally
        {
            // 释放TCP客户端资源
            client.Close();
        }
    }
}

TCP服务器

监听端口

要创建一个TCP服务器,需要使用TcpListener类监听指定的端口,并等待客户端的连接。以下是一个监听端口的示例代码:

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

class Program
{
    static void Main(string[] args)
    {
        // 本地IP地址和端口号
        string localIP = "127.0.0.1";
        int localPort = 8888;

        // 创建TCP服务器对象
        TcpListener server = new TcpListener(IPAddress.Parse(localIP), localPort);

        try
        {
            // 开始监听
            server.Start();

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

            // 接收客户端连接
            TcpClient client = server.AcceptTcpClient();

            Console.WriteLine("客户端已连接");
        }
        catch (Exception ex)
        {
            Console.WriteLine("操作失败:" + ex.Message);
        }
        finally
        {
            // 停止监听
            server.Stop();
        }
    }
}

接收数据

连接成功后,可以使用TcpClient对象的GetStream方法获取与客户端通信的网络流,然后使用流的Read方法接收客户端发送的数据。以下是一个接收数据的示例代码:

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

class Program
{
    static void Main(string[] args)
    {
        // 本地IP地址和端口号
        string localIP = "127.0.0.1";
        int localPort = 8888;

        // 创建TCP服务器对象
        TcpListener server = new TcpListener(IPAddress.Parse(localIP), localPort);

        try
        {
            // 开始监听
            server.Start();

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

            // 接收客户端连接
            TcpClient client = server.AcceptTcpClient();

            Console.WriteLine("客户端已连接");

            // 接收客户端发送的数据
            NetworkStream stream = client.GetStream();

            byte[] buffer = new byte[1024];
            int bytesRead = stream.Read(buffer, 0, buffer.Length);
            string data = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);

            Console.WriteLine("已接收到客户端发送的数据:" + data);
        }
        catch (Exception ex)
        {
            Console.WriteLine("操作失败:" + ex.Message);
        }
        finally
        {
            // 停止监听
            server.Stop();
        }
    }
}

以上是TCP客户端和TCP服务器的基本使用方法,可以根据需要进行修改和扩展,实现更加复杂和高效的网络编程功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c# 网络编程之tcp - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • 利用FlubuCore用C#来写DevOps脚本的方法详解

    FlubuCore是一个用于构建和部署.NET应用程序的开源工具。它使用C#编写,可以帮助我们编写DevOps脚本,自动化构建和部署过程。在本文中,我们将介绍如何使用FlubuCore编写DevOps脚本,并提供两个示例说明。 安装FlubuCore 在开始之前,我们需要安装FlubuCore。我们可以使用NuGet包管理器或手动下载安装程序包。在Visua…

    C# 2023年5月17日
    00
  • .Net core Blazor+自定义日志提供器实现实时日志查看器的原理解析

    以下是使用.NET Core Blazor和自定义日志提供程序实现实时日志查看器的原理解析: 1. 什么是Blazor Blazor是一个.NET平台上的开源Web框架,它允许我们使用C#和.NET技术构建现代Web应用程序。Blazor使用WebAssembly技术,可以在浏览器中运行C#代码。 2. 什么是自定义日志提供器 在.NET Core中,我们可…

    C# 2023年5月12日
    00
  • C#启动和停止windows服务的实例代码

    启动和停止Windows服务是C#编程中的常见问题。本文将介绍如何使用C#编写代码来启动和停止Windows服务的实例代码。 步骤一:导入命名空间 要使用C#调用Windows服务,首先需要导入以下两个命名空间: using System.ServiceProcess; using System.Diagnostics; 步骤二:获取服务实例 可以通过以下方…

    C# 2023年5月31日
    00
  • C#编程总结(六)详解异步编程

    C#编程总结(六)详解异步编程是一篇介绍异步编程知识的教程。异步编程是C#中非常重要的概念,它可以提高应用程序的响应速度和性能。本文将详细讲解异步编程的几个主要方面。 1. 异步编程的概念和作用 异步编程是一种优化并发应用程序的方法。在C#中,异步编程可以用async和await关键字来实现。异步编程的主要作用在于减少线程的阻塞时间,提高应用程序的响应速度和…

    C# 2023年5月15日
    00
  • C#实现Winform无边框移动的方法

    针对“C#实现Winform无边框移动的方法”的完整攻略,以下为详细说明。 1. 隐藏窗体的系统边框 首先,我们需要将窗体的系统边框(TitleBar)隐藏起来,从而实现无边框窗体移动。我们可以通过设置窗体BorderStyle属性为None来实现: this.FormBorderStyle = FormBorderStyle.None; 2. 实现窗体的拖…

    C# 2023年6月6日
    00
  • 基于集合的子集与集合的全排列的相关问题

    关于“基于集合的子集与集合的全排列的相关问题”,主要包括以下两个问题: 如何生成一个集合的全部子集? 如何生成一个集合的全部排列? 生成一个集合的全部子集 如果有一个集合,例如:{a, b, c},那么其所有子集为: 空集:{} 一个元素的子集:{a}, {b}, {c} 两个元素的子集:{a, b}, {a, c}, {b, c} 三个元素的子集:{a, …

    C# 2023年6月7日
    00
  • C#使用Socket快速判断数据库连接是否正常的方法

    以下是C#使用Socket快速判断数据库连接是否正常的方法的详细攻略。 为什么需要使用Socket来判断数据库连接是否正常 在开发应用程序时,我们通常需要将数据库与应用程序进行连接,以提供数据的读写操作。但是,有时候我们需要判断数据库连接是否正常,以避免在后期出现一些问题。而使用Socket来判断数据库连接是否正常,则可以在较短的时间内,得出结论,并提供更好…

    C# 2023年6月2日
    00
  • C#开发Winform实现文件操作案例

    下面是详细的攻略: C#开发Winform实现文件操作案例 一、Windows Forms程序基础 首先,我们需要先了解Windows Forms程序的基础知识,包括如何创建基本的Winform应用程序、如何添加各种控件和窗体等等。这里就不详细阐述了,大家可以自行查阅相关教程进行学习。 二、文件操作的基本概念 在Winform应用程序中,经常需要对文件进行操…

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