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日

相关文章

  • ASP.NET ASHX中获得Session的方法

    首先,我们需要了解在 ASP.NET ASHX 中获取 Session 的方法。 在 ASP.NET ASHX 中,我们可以通过 HttpContext.Current.Session 属性访问当前会话(Session)。Session 是一种在服务器端保存用户数据的机制,它可以在同一个用户的多个请求之间共享数据。 以下是一个简单的示例,展示如何在 ASHX…

    C# 2023年6月1日
    00
  • C# 脚本引擎CS-Script的使用

    C# 脚本引擎CS-Script的使用 什么是CS-Script? CS-Script是一个用于扩展C#应用程序的开源脚本引擎。它允许您在不编译代码的情况下运行C#脚本,这使得C#脚本可以用于快速手动测试代码、构建脚本和部署小型工具等场合。 安装CS-Script 您可以使用NuGet安装CS-Script。在Visual Studio的“NuGet包管理器…

    C# 2023年6月3日
    00
  • 详解C# WinForm如何优雅的处理异常

    详解C# WinForm如何优雅的处理异常 什么是异常? 在计算机编程中,异常(Exception)是指在程序运行时发生的某种不正常的情况,如:除数为零、空指针引用等,这会导致程序的正常执行受到影响。在C# WinForm开发中,处理异常是一项非常重要的操作,它很大程度上决定了程序的稳定性和易用性。 异常处理的选项 在C#中,我们有多种方法来处理异常。以下是…

    C# 2023年5月15日
    00
  • .Net Core 多文件打包压缩的实现代码

    .NET Core 多文件打包压缩的实现代码 在.NET Core应用程序中,有时需要将多个文件打包成一个压缩文件,以便于传输或存储。在本攻略中,我们将介绍如何使用C#代码实现多文件打包压缩,并提供两个示例说明。 1. 使用System.IO.Compression命名空间 在.NET Core应用程序中,可以使用System.IO.Compression命…

    C# 2023年5月16日
    00
  • 10个C#程序员经常用到的实用代码片段

    下面我就来为大家详细讲解“10个C#程序员经常用到的实用代码片段”的完整攻略。 1. 字符串中查找是否存在指定字符示例 在C#中,我们经常需要查找字符串中是否存在指定的字符,可以用以下代码片段: bool isCharExist = myString.Contains("a"); 其中,myString为要搜索的字符串,”a”为要查找的字…

    C# 2023年5月15日
    00
  • .NET6使用ImageSharp实现给图片添加水印

    以下是关于“.NET6使用ImageSharp实现给图片添加水印”的完整攻略: 1. 什么是ImageSharp? ImageSharp是一个.NET的图像处理库,它提供了一种简单的方式来处理图像。ImageSharp支持各种图像格式,例如JPEG、PNG、BMP、GIF等,并提供了一些有用的功能,例如调整大小、裁剪、旋转、添加水印等。 2. 安装Image…

    C# 2023年5月12日
    00
  • 关于C#反射 你需要知道的

    关于C#反射的知识,以下是本文的完整攻略: 什么是C#反射 C#反射指的是在运行时动态访问和操作程序集中的类型、属性、方法等信息的能力。通过C#反射,我们可以在运行时获取程序集的元数据信息并进行操作,比如创建实例、调用方法、获取属性等,从而使代码更加灵活、具有可扩展性和适应性。 如何使用C#反射 使用C#反射需要以下步骤: 加载程序集:使用Assembly.…

    C# 2023年5月31日
    00
  • C#实现判断操作系统是否为Win8以上版本

    要实现判断操作系统是否为Windows 8及以上版本,可以用C#语言编写以下代码: using System; using System.Runtime.InteropServices; class OperatingSystemUtils { [DllImport("kernel32.dll")] static extern bool …

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