C#学习教程之Socket的简单使用

C#学习教程之Socket的简单使用

什么是Socket?

Socket(套接字)是支持TCP/IP协议的网络通信方式,它是一种用于网络通信的编程接口或应用程序编程接口(API),使得两个进程之间可以通过网络进行数据交互。在 C# 中,可以使用 System.Net.Sockets 命名空间中的类来实现 Socket 的编程。

如何实现 Socket 编程?

在 C# 中,我们可以借助 System.Net.Sockets 命名空间中的 Socket 类,来实现 Socket 编程。

下面是两条示例说明:

示例一:TCP 服务端

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

class Server
{
    static void Main(string[] args) 
    {
        // 创建一个 TCP/IP Socket 对象
        Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        // 获取本地 IP 地址和端口号
        IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888);

        // 绑定 Socket 对象到本地地址
        listener.Bind(localEndPoint);

        // 开始监听
        listener.Listen(10);

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

        // 等待客户端连接
        Socket clientSocket = listener.Accept();

        Console.WriteLine("已经和客户端建立连接");

        byte[] buffer = new byte[1024];
        int bytesReceived = 0;

        // 接收客户端发送的数据
        do 
        {
            bytesReceived = clientSocket.Receive(buffer);

            string data = Encoding.ASCII.GetString(buffer, 0, bytesReceived);
            Console.WriteLine($"接收到客户端发送的数据:{data}");
        } while (bytesReceived > 0);

        // 关闭 TCP 连接
        clientSocket.Shutdown(SocketShutdown.Both);
        clientSocket.Close();
    }
}

示例二:TCP 客户端

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

class Client 
{
    static void Main(string[] args) 
    {
        // 创建一个 TCP/IP Socket 对象
        Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        // 获取服务器 IP 地址和端口号
        IPEndPoint remoteEp = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888);

        // 连接到服务器
        clientSocket.Connect(remoteEp);

        Console.WriteLine("已经和服务器建立连接");

        // 向服务器发送数据
        string message = "Hello, server!";
        byte[] buffer = Encoding.ASCII.GetBytes(message);
        clientSocket.Send(buffer);

        // 关闭 TCP 连接
        clientSocket.Shutdown(SocketShutdown.Both);
        clientSocket.Close();
    }
}

总结

本篇文章介绍了 C# 中 Socket 的简单使用,包括创建 Socket 对象、绑定到本地地址、开始监听、接收数据、发送数据等操作。希望可以帮助初学者了解 Socket 的使用方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#学习教程之Socket的简单使用 - Python技术站

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

相关文章

  • C#之Socket(套接字)通信

    下面是关于“C#之Socket(套接字)通信”的完整攻略。 一、Socket(套接字)通信简介 Socket(套接字)是网络编程中的一个概念,主要用于实现网络通信。在Socket通信中,可以使用多种协议进行通信,如TCP、UDP等。 在C#中,Socket通信主要是通过System.Net命名空间中的一些类和接口实现的。 二、Socket(套接字)通信流程 …

    C# 2023年5月31日
    00
  • asp.net实现将ppt文档转换成pdf的方法

    将 ppt 文档转换成 PDF 是一个常见的需求,以下是 asp.net 实现将 ppt 文档转换成 PDF 的方法的完整攻略。 步骤 1:安装 Microsoft PowerPoint Interop 首先,您需要安装 Microsoft PowerPoint Interop 来处理 ppt 文件。通过安装 PowerPoint Interop,您可以将 …

    C# 2023年6月1日
    00
  • 简单学习C#中的泛型方法使用

    简单学习C#中的泛型方法使用 什么是泛型 泛型是C#中的一种特殊类型或方法,它允许我们编写可以在多个类型上操作的代码,而无需在每种类型上编写多个重复的代码。它为我们提供了一种在编译时类型安全检查的方式,以更好的在不同情况下进行重用。 泛型方法的定义 下面是一个简单的泛型方法的定义。 public static void PrintArray<T>…

    C# 2023年6月7日
    00
  • C#实现打造气泡屏幕保护效果

    C#实现打造气泡屏幕保护效果 屏幕保护程序是许多电脑用户在闲暇时间会看到的一个漂亮而且有趣的应用。在这篇攻略中,我们将探讨如何使用C#编写一个简单的气泡屏保程序。本示例基于.NET Framework 4.7.1。 步骤1. 创建项目 首先,打开Visual Studio,从“文件”菜单中选择“新建项目”。在弹出的窗口中,选择“Visual C#”和“Win…

    C# 2023年5月31日
    00
  • C# 泛型的约束

    下面是详细讲解 “C# 泛型的约束” 的完整攻略,包括概念、使用方法和示例说明等: 概念 在 C# 中,泛型是一种让类或方法可以支持多种数据类型的技术。泛型的优点是能够让程序更加灵活、可扩展,同时也避免了大量的重复代码。而泛型的约束则是用来限制泛型类型参数的类型或属性的限制条件,以确保泛型类型参数符合特定需求,比如实现某种接口、具有某种属性等。 使用方法 泛…

    C# 2023年5月31日
    00
  • asp.net 一个封装比较完整的FTP类

    使用ASP.NET开发Web应用时,如果需要进行FTP文件上传、下载或其他操作,可以使用FTP类进行操作。本文将介绍如何使用ASP.NET中一个封装比较完整的FTP类进行FTP文件上传和下载。以下是操作步骤: 步骤1:引用FTP类 在ASP.NET项目中引用FTP类,可以通过NuGet包管理器安装FTP类库,如下所示: Install-Package Flu…

    C# 2023年6月3日
    00
  • abp(net core)+easyui+efcore实现仓储管理系统——供应商管理升级之下(六十四)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三)…

    C# 2023年5月7日
    00
  • 浅谈从ASP.NET Core2.2到3.0你可能会遇到这些问题

    浅谈从ASP.NET Core 2.2到3.0你可能会遇到这些问题 ASP.NET Core 3.0是一个重大的版本更新,其中包含了许多新功能和改进。在本攻略中,我们将讨论从ASP.NET Core 2.2升级到3.0时可能会遇到的一些常见问题,并提供一些解决方案。 问题一:MVC应用程序中的路由不起作用 在ASP.NET Core 3.0中,MVC应用程序…

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