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#判断字符串中内容是否为纯数字的详细教程

    下面是关于如何判断字符串中内容是否为纯数字的详细教程: 步骤一:准备工作 在C#中,我们可以使用int.TryParse()方法来判断一个字符串是否为纯数字,该方法会尝试将指定的字符串转换为数字类型,如果转换成功,则返回true,否则返回false。 步骤二:判断字符串是否为纯数字 接下来,我们可以编写代码来判断字符串是否为纯数字: string input…

    C# 2023年6月8日
    00
  • c#通过ip获取地理信息

    获取IP地址的地理位置信息通常可以使用IP地理定位API实现,而对于C#开发者,我们可以使用第三方库或通过一些开源API实现该功能。 通过第三方库获取IP地理位置 一些第三方库可以大大简化通过IP地址获取地理位置信息的过程。下面是一个通过使用MaxMind GeoIP2库来获取IP地址的地理位置信息的示例代码: using System; using Max…

    C# 2023年6月7日
    00
  • c#的dllimport使用方法详解

    关于“C#的DllImport使用方法详解”的攻略如下: 简介 DllImport是C#中一个用于调用非托管代码的方法。它可以让我们在C#代码中调用一些使用一些C++或Win32 API等编写的代码。 使用方法 DllImport的用法非常简单,我们只需要使用指定DllImport特性来声明一个需要调用的函数,然后在代码中直接调用该函数即可。 下面是DllI…

    C# 2023年6月1日
    00
  • 详解C# FileStream类

    详解C# FileStream类 FileStream类简介 FileStream类是C#中常用的文件读写类,它提供了对文件字节流进行读写的能力。通过FileStream,我们可以读取和写入二进制文件、文本文件、图像文件等各种类型的文件。 FileStream类非常强大,支持文件流的读写、位置控制、截断、同步等操作。如果您想要在C#中读取、写入文件,那么掌握…

    C# 2023年5月15日
    00
  • ASP.NET Core实现多文件上传

    ASP.NET Core 实现多文件上传的完整攻略如下: 步骤一:创建 ASP.NET Core 应用程序 在使用 ASP.NET Core 实现多文件上传之前,需要创建一个 ASP.NET Core 应用程序。可以使用 Visual Studio 或者命令行工具创建 ASP.NET Core 应用程序。 步骤二:添加依赖项 在使用 ASP.NET Core…

    C# 2023年5月17日
    00
  • C# 16进制与字符串、字节数组之间的转换

    下面我将详细讲解C#中16进制与字符串、字节数组之间的转换。 字符串与16进制转换 字符串转16进制 我们可以使用BitConverter和Encoding提供的方法来将字符串转化为16进制。 以下是将字符串转化为16进制的示例代码: string str = "Hello World!"; byte[] bytes = Encoding…

    C# 2023年6月7日
    00
  • C# 数组实例介绍(图文)

    C# 数组实例介绍(图文)攻略 介绍 本文将介绍C#中数组的概念、语法、类型和常用操作方法,并提供多个示例以帮助读者深入理解。 数组的概念 数组是一组相同类型的变量集合,它们在内存中按照一定顺序被存储和访问。 数组的语法 以下是数组的语法: //声明一个int类型的数组,长度为5 int[] myArray = new int[5]; //直接初始化数组元素…

    C# 2023年5月31日
    00
  • 探讨:如何使用委托,匿名方法对集合进行万能排序

    探讨:如何使用委托、匿名方法对集合进行万能排序 在C#中,我们可以使用委托与匿名方法的方式实现对集合的万能排序,这种方法非常灵活方便,可以把排序规则“传递”给集合对象,使得集合对象根据排序规则进行排序。 下面将详细介绍如何使用委托、匿名方法对集合进行排序。 委托的用途 一般情况下,我们都会使用IComparer接口实现对集合进行排序,但IComparer接口…

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