C#实现的Socket服务器端、客户端代码分享

接下来我将详细讲解如何实现C# Socket服务器端、客户端代码的分享。

一、概述

Socket是一种应用程序编程接口(API),用于在两个计算机之间进行网络通信。在C#中,可以使用System.Net.Sockets命名空间来创建和使用Socket。本攻略将介绍如何使用C#创建一个简单的Socket服务器端和客户端,并分享相关代码。

二、Socket服务器端

要创建一个Socket服务器端,我们需要执行以下步骤:

1.创建服务器端Socket对象

Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

创建一个IPv4类型的Socket对象,使用TCP协议进行通信。

2.绑定IP地址和端口号

IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
IPAddress ipAddress = host.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 12345);
serverSocket.Bind(ipEndPoint);

为Socket对象绑定本机IP地址和端口号。在本例中,我们使用本机的第一个IP地址和端口号为12345。实际上,我们可以使用任何可用的IP地址和端口号,只要它们没有被其他进程使用。

3.监听来自客户端的连接

serverSocket.Listen(10);

第一个参数表示连接队列的最大长度,第二个参数表示服务器端开始监听的端口号。

4.接受客户端连接

Socket clientSocket = serverSocket.Accept();

服务器端会一直阻塞,直到有客户端连接到来,此时会返回一个客户端Socket对象用于后面的通信。

5.接收客户端发送的数据

byte[] buffer = new byte[1024];
int length = clientSocket.Receive(buffer);
string message = Encoding.UTF8.GetString(buffer, 0, length);

使用客户端Socket对象的Receive方法接收客户端发送的数据,并将其转换为字符串。

6.发送数据给客户端

byte[] buffer = Encoding.UTF8.GetBytes("Hello Client!");
clientSocket.Send(buffer);

使用客户端Socket对象的Send方法将数据发送给客户端。

示例1

下面的示例演示了如何实现一个简单的Socket服务器端,只接收客户端发送的数据,并将其显示在控制台上。

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

namespace SocketServerDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
            IPAddress ipAddress = host.AddressList[0];
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 12345);
            serverSocket.Bind(ipEndPoint);
            serverSocket.Listen(10);
            Console.WriteLine("Server started and listening on: " + ipEndPoint);  
            Socket clientSocket = serverSocket.Accept();
            Console.WriteLine("Client connected: " + clientSocket.RemoteEndPoint);         
            byte[] buffer = new byte[1024];
            int length = clientSocket.Receive(buffer);
            string message = Encoding.UTF8.GetString(buffer, 0, length);
            Console.WriteLine("Client says: " + message);
            clientSocket.Close();   
            serverSocket.Close();
            Console.ReadLine();
        }
    }
}

三、Socket客户端

要创建一个Socket客户端,我们需要执行以下步骤:

1.创建客户端Socket对象

Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

创建一个IPv4类型的Socket对象,使用TCP协议进行通信。

2.连接服务器端

IPHostEntry host = Dns.GetHostEntry("localhost");
IPAddress ipAddress = host.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 12345);
clientSocket.Connect(ipEndPoint);

使用服务器端IP地址和端口号建立连接。在本例中,我们将服务器端地址设置为localhost,端口号为12345。

3.发送数据给服务器端

byte[] buffer = Encoding.UTF8.GetBytes("Hello Server!");
clientSocket.Send(buffer);

使用客户端Socket对象的Send方法将数据发送给服务器端。

4.接收服务器端发送的数据

byte[] buffer = new byte[1024];
int length = clientSocket.Receive(buffer);
string message = Encoding.UTF8.GetString(buffer, 0, length);

使用客户端Socket对象的Receive方法接收服务器端发送的数据,并将其转换为字符串。

示例2

下面的示例演示了如何实现一个简单的Socket客户端,向服务器端发送一条消息,并将服务器端的响应显示在控制台上。

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

namespace SocketClientDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPHostEntry host = Dns.GetHostEntry("localhost");
            IPAddress ipAddress = host.AddressList[0];
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 12345);
            clientSocket.Connect(ipEndPoint);
            Console.WriteLine("Connected to server: " + ipEndPoint);
            byte[] buffer = Encoding.UTF8.GetBytes("Hello Server!");
            clientSocket.Send(buffer);
            byte[] buffer2 = new byte[1024];
            int length = clientSocket.Receive(buffer2);
            string message = Encoding.UTF8.GetString(buffer2, 0, length);
            Console.WriteLine("Server says: " + message);
            clientSocket.Close();
            Console.ReadLine();
        }
    }
}

四、总结

本攻略介绍了如何使用C#创建一个简单的Socket服务器端和客户端,并分享了相关的代码。通过这些示例,您应该可以了解如何使用C#实现Socket通信,并开始构建更复杂的网络应用程序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现的Socket服务器端、客户端代码分享 - Python技术站

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

相关文章

  • C#读取中文字符及清空缓冲区的实现代码

    C# 读取中文字符并清空缓冲区的实现涉及到两个关键点:字符编码和缓冲区控制。 一、字符编码 在 C# 中,我们可以使用 System.Text.Encoding 类来处理字符编码。常见的字符编码有 UTF-8、UTF-16LE、GB2312 等。一般情况下,我们建议使用 UTF-8 编码,因为它可以完美地处理中文字符。 读取中文字符前,我们需要创建一个指定编…

    C# 2023年6月7日
    00
  • C#内插字符串的简单使用

    C#内插字符串是一种方便的字符串构造方式,可以使用字符串插值(String interpolation)表达式 ${…} 显示地使用表达式计算值并将结果插入到字符串中。C# 6.0及以后版本支持内插字符串。 Step 1: 创建文本文件 首先需要创建一个C#代码文件(例如,使用Visual Studio或Visual Studio Code),并保存成 …

    C# 2023年6月7日
    00
  • 在 C# 中使用 Span 和 Memory 编写高性能代码的详细步骤

    在 C# 中,Span 和 Memory 是用于优化代码性能的关键类型。Span 是一种结构体类型,它将对象内存表示为连续的、可编辑的范围。Memory 则是一个类类型,可以包装一段内存以及操作该内存的方法。使用这两种类型,可以使代码更高效地使用内存和更快地执行。 下面介绍一些使用 Span 和 Memory 编写高性能代码的详细步骤。 步骤一:创建 Spa…

    C# 2023年6月3日
    00
  • 详解C#中一维数组的插入

    下面我将针对“详解C#中一维数组的插入”进行完整的介绍。 插入一维数组 在C#中插入一维数组,我们可以使用数组的 Array.Copy() 和 Array.Resize() 方法。下面分别介绍这两个方法的用法: 1.使用Array.Copy()方法 int[] arr = { 1, 2, 3, 4, 5 }; //初始数组 int[] arrNew = ne…

    C# 2023年6月7日
    00
  • C#实现汽车租赁系统项目

    C# 实现汽车租赁系统项目 汽车租赁系统是一个比较实用的项目,可以用来锻炼 C# 编程技能。下面我们将详细讲解如何实现这个项目。 需求分析 首先我们需要对项目的需求进行分析。汽车租赁系统主要有以下几个功能模块: 用户管理:包括用户登录、注册、修改个人信息等操作。 车型管理:包括添加、删除、修改车型信息等操作。 车辆管理:包括添加、删除、修改车辆信息等操作。 …

    C# 2023年6月7日
    00
  • jQuery使用$.ajax进行即时验证实例详解

    让我来详细讲解“jQuery使用$.ajax进行即时验证实例详解”。 标题 首先,我们需要了解一下什么是jQuery以及$.ajax。jQuery是一个快速且简洁的JavaScript库,它简化了HTML文档遍历、事件处理、动画等操作。而$.ajax是jQuery中一个重要的函数,用来进行异步请求,可以实现无需刷新页面即可获取/修改数据。 具体步骤 在实现即…

    C# 2023年6月8日
    00
  • C#类的成员之Field字段的使用

    C#类的成员之Field字段的使用 在C#类的成员中,Field字段是一种保存数据的变量。它可以用来存储类的属性值,也可以用来保存临时数据。本文将详细讲解C#类的成员之Field字段的使用方法,包括Field的定义、访问修饰符、读写操作等细节内容以及两个示例。 Field字段的定义 在C#中,Field字段是一种类成员,定义在类中的任何地方,需要明确指定访问…

    C# 2023年5月15日
    00
  • 使用 BenchmarkDotNet 对 C# 代码进行基准测试

    以下是使用 BenchmarkDotNet 对 C# 代码进行基准测试的完整攻略。 什么是 BenchmarkDotNet? BenchmarkDotNet 是一个用于 .NET 应用程序的基准测试框架。它允许你轻松地编写、运行和分析基准测试代码,以衡量代码性能和稳定性,从而帮助你做出优化决策。 如何使用 BenchmarkDotNet 进行基准测试? 首先…

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