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日

相关文章

  • asp.net点击 查看更多 实现无刷新加载的实现代码

    下面是详细讲解“ASP.NET点击查看更多实现无刷新加载的实现代码”的攻略: 一、实现原理 在ASP.NET中,我们可以使用Ajax实现无刷新加载。Ajax的原理是通过JavaScript中的XMLHttpRequest对象向服务器发送异步请求,然后通过DOM操作把返回的数据实时更新到网页中。实现的步骤大概如下: 创建XMLHttpRequest对象。 向服…

    C# 2023年5月31日
    00
  • C#实现汉字转换为拼音缩写的代码

    为什么需要汉字转换为拼音缩写的代码? 在开发中经常遇到需要用到汉字首字母缩写的场景,例如:根据拼音缩写进行搜索、按照拼音缩写排序等。如果每次手动输入显然是不现实的,因此需要使用程序实现汉字转换为拼音缩写的功能。 实现汉字转换为拼音缩写的基本思路 汉字转拼音的过程需要使用到第三方库,例如pinyin4net等,具体步骤如下: 下载并引入pinyin4net库;…

    C# 2023年6月8日
    00
  • C# 数组查找与排序实现代码

    让我来给你详细讲解一下“C# 数组查找与排序实现代码”的完整攻略: 1. 数组查找 在 C# 中数组查找的实现可以使用线性查找和二分查找两种方式。 1.1 线性查找 线性查找就是从数组第一个元素开始逐一比对,直到找到目标元素或遍历整个数组还没有找到目标元素为止。以下为线性查找的代码示例: public static int LinearSearch(int[…

    C# 2023年5月31日
    00
  • wxPython实现文本框基础组件

    下面我会详细讲解“wxPython实现文本框基础组件”的完整攻略。 标题 1. 前言 wxPython 是基于 Python 语言的一种 GUI 工具包。使用 wxPython 可以方便地进行图形用户界面的开发。本文介绍了如何使用 wxPython 实现文本框基础组件。在本示例中,使用 Python 3.x 和 wxPython 4.x 版本进行演示。 2.…

    C# 2023年5月31日
    00
  • 在ASP.NET 2.0中操作数据之七十二:调试存储过程

    要在ASP.NET 2.0中调试存储过程,我们可以采用如下步骤: 步骤一:创建数据库 在本地数据库中创建一个用于存储过程的测试数据库。可以使用Microsoft SQL Server Management Studio来创建该数据库。假设我们创建了一个名称为“TestDB”的数据库。 步骤二:创建存储过程 在创建存储过程之前,需要确保数据库连接已经设置好。可…

    C# 2023年6月3日
    00
  • .net(c#)中的new关键字详细介绍

    下面我来详细讲解一下在.NET(C#)中的new关键字的使用。 什么是new关键字 在面向对象的编程中,我们经常需要定义类及其成员。有时候,我们需要在一个派生类型中重新定义一个类的成员,这样我们就可以重新定义其行为,这时我们就可以使用new关键字。 关于new关键字的使用规则是:- 当我们使用new关键字声明一个成员时,它会隐藏基类的同名成员。- 当我们在一…

    C# 2023年5月31日
    00
  • C# 数组中的 indexOf 方法及使用

    C# 数组中的 indexOf 方法及使用 在C#中,数组是一种非常常见的数据结构,它们可以用来存储多个相同类型的数据。我们可以使用indexOf方法来查找指定元素在数组中的索引位置。 indexOf 方法的语法 indexOf方法用于查找数组中指定元素的位置,语法如下: public static int indexOf(Object[] array, O…

    C# 2023年6月7日
    00
  • c# NPOI 如何在指定单元格导入导出图片

    好的!下面是关于“c# NPOI 如何在指定单元格导入导出图片”的完整攻略。 1. 背景 NPOI是一款用于操作office文档的开源组件,它支持对Word、Excel、PowerPoint等文件的读取和写入。在Excel文件中,常常需要在单元格中插入图片,并且在需要时可以导出这些图片。本攻略将介绍如何使用c# NPOI在指定单元格中导入导出图片。 2. 导…

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