C#中简单Socket编程的实现实例

 更新时间:2025年11月11日 09:28:24   作者:yugi987838  
本文主要介绍了C#中简单Socket编程的实现实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

引言

Socket编程是网络编程的基础,通过Socket编程,可以实现计算机之间的通信。本文将介绍如何在C#中进行简单的Socket编程,包括服务器端和客户端的实现。示例将展示TCP连接的基本操作,适用于理解网络通信的基本概念和实现方法。

准备工作

确保您的开发环境中安装了.NET SDK,可以通过Visual Studio或其他C#开发工具进行编码和调试。

创建Socket服务器

服务器需要监听特定端口,接受客户端连接,并进行数据收发。以下是一个简单的C# Socket服务器示例:

服务器代码

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
 
class Program
{
    static void Main(string[] args)
    {
        // 设置服务器IP和端口
        IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
        int port = 11000;
 
        // 创建一个TcpListener对象
        TcpListener listener = new TcpListener(ipAddress, port);
 
        // 开始监听客户端请求
        listener.Start();
        Console.WriteLine("服务器已启动,等待客户端连接...");
 
        while (true)
        {
            // 接受客户端连接
            TcpClient client = listener.AcceptTcpClient();
            Console.WriteLine("客户端已连接!");
 
            // 启动一个新线程处理客户端请求
            Thread clientThread = new Thread(HandleClient);
            clientThread.Start(client);
        }
    }
 
    static void HandleClient(object obj)
    {
        TcpClient client = (TcpClient)obj;
 
        // 获取网络流
        NetworkStream stream = client.GetStream();
 
        byte[] buffer = new byte[1024];
        int bytesRead;
 
        // 读取客户端发送的数据
        while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) != 0)
        {
            string data = Encoding.UTF8.GetString(buffer, 0, bytesRead);
            Console.WriteLine("收到客户端消息: " + data);
 
            // 回应客户端消息
            byte[] response = Encoding.UTF8.GetBytes("服务器已收到消息");
            stream.Write(response, 0, response.Length);
        }
 
        // 关闭连接
        client.Close();
    }
}
​

创建Socket客户端

客户端需要连接服务器并发送数据。以下是一个简单的C# Socket客户端示例:

客户端代码

using System;
using System.Net.Sockets;
using System.Text;
 
class Program
{
    static void Main(string[] args)
    {
        // 设置服务器IP和端口
        string server = "127.0.0.1";
        int port = 11000;
 
        // 创建一个TcpClient对象
        TcpClient client = new TcpClient(server, port);
 
        // 获取网络流
        NetworkStream stream = client.GetStream();
 
        // 发送消息到服务器
        string message = "Hello, Server!";
        byte[] data = Encoding.UTF8.GetBytes(message);
        stream.Write(data, 0, data.Length);
        Console.WriteLine("发送消息到服务器: " + message);
 
        // 接收服务器回应消息
        byte[] buffer = new byte[1024];
        int bytesRead = stream.Read(buffer, 0, buffer.Length);
        string response = Encoding.UTF8.GetString(buffer, 0, bytesRead);
        Console.WriteLine("收到服务器回应: " + response);
 
        // 关闭连接
        client.Close();
    }
}
​

运行示例

  1. 先运行服务器代码。服务器将开始监听指定的IP和端口,等待客户端连接。
  2. 然后运行客户端代码。客户端将连接到服务器并发送消息。
  3. 服务器接收到消息后,将回应客户端,并在控制台上显示接收到的消息。
  4. 客户端接收到服务器的回应消息,并在控制台上显示

到此这篇关于C#中简单Socket编程的实现实例的文章就介绍到这了,更多相关C#简单Socket编程内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#的自定义语法糖的使用详解

    C#的自定义语法糖的使用详解

    这篇文章主要介绍了C#的自定义语法糖的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • C#连接操作 MySQL 数据库实例(使用官方驱动)

    C#连接操作 MySQL 数据库实例(使用官方驱动)

    这篇文章主要介绍了C#连接操作 MySQL 数据库实例(使用官方驱动),本文讲解了C#中的Mysql连接方法和SQL操作方法,需要的朋友可以参考下
    2015-02-02
  • C#中using的使用方式详解

    C#中using的使用方式详解

    这篇文章主要介绍了C#中using的使用方式方式详解,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • c# DateTime常用操作实例(datetime计算时间差)

    c# DateTime常用操作实例(datetime计算时间差)

    字符串操作DateTime操作,datetime计算时间差,取当前时间,更多方法看下面代码
    2013-12-12
  • C# OpenCvSharp实现去除字母后面的杂线

    C# OpenCvSharp实现去除字母后面的杂线

    这篇文章主要为大家详细介绍了C#如何使用OpenCvSharp实现去除字母后面的杂线效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • C#使用Matrix执行缩放的方法

    C#使用Matrix执行缩放的方法

    这篇文章主要介绍了C#使用Matrix执行缩放的方法,实例分析了C#操作Matrix实现缩放的相关技巧,需要的朋友可以参考下
    2015-06-06
  • C#TextBox设置提示文本方式(SetHintText)

    C#TextBox设置提示文本方式(SetHintText)

    这篇文章主要介绍了C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • Unity3D游戏-鼠标点击使角色移动避开障碍物

    Unity3D游戏-鼠标点击使角色移动避开障碍物

    在Unity的世界里,当你轻点鼠标,角色仿佛被赋予了新的使命,沿着一条无形的轨迹,向着地图上的目标点进发,每一次移动,不仅是简单的位移,更是对未知的探索,这种交互,让玩家与游戏世界紧密相连,仿佛自己就是那个掌控命运的魔法师,用指尖绘制出角色的冒险之路......
    2025-08-08
  • C#中静态构造函数的几点说明介绍

    C#中静态构造函数的几点说明介绍

    本篇文章主要是对C#中静态构造函数的几点说明进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • C#读写共享文件夹的方法

    C#读写共享文件夹的方法

    这篇文章主要为大家详细介绍了C#读写共享文件夹的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05

最新评论