C#中简单Socket编程

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

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. 客户端接收到服务器的回应消息,并在控制台上显示。
目录
相关文章
|
8月前
|
数据处理 C# C++
如何使用C#和C++结构体实现Socket通信
如何使用C#和C++结构体实现Socket通信
346 0
|
3月前
|
C# 开发者
C# 一分钟浅谈:Socket 编程基础
【10月更文挑战第7天】本文介绍了Socket编程的基础知识、基本操作及常见问题,通过C#代码示例详细展示了服务器端和客户端的Socket通信过程,包括创建、绑定、监听、连接、数据收发及关闭等步骤,帮助开发者掌握Socket编程的核心技术和注意事项。
120 3
C# 一分钟浅谈:Socket 编程基础
|
3月前
|
消息中间件 网络协议 C#
C#使用Socket实现分布式事件总线,不依赖第三方MQ
`CodeWF.EventBus.Socket` 是一个轻量级的、基于Socket的分布式事件总线系统,旨在简化分布式架构中的事件通信。它允许进程之间通过发布/订阅模式进行通信,无需依赖外部消息队列服务。
C#使用Socket实现分布式事件总线,不依赖第三方MQ
|
8月前
|
C#
C# 使用Socket对接
C# 使用Socket对接
52 1
|
移动开发 监控 网络协议
基于Socket通讯(C#)和WebSocket协议(net)编写的两种聊天功能(文末附源码下载地址)
基于Socket通讯(C#)和WebSocket协议(net)编写的两种聊天功能(文末附源码下载地址)
|
8月前
|
JSON C# 图形学
【Unity 3D】利用C#、Unity和Socket实现简单的在线聊天室工具(附源码 简单易懂)
【Unity 3D】利用C#、Unity和Socket实现简单的在线聊天室工具(附源码 简单易懂)
213 0
|
8月前
|
网络协议 Unix Linux
【Unity 3D】C#中Socket及TCP三次握手与四次挥手详解(超详细 图文解释)
【Unity 3D】C#中Socket及TCP三次握手与四次挥手详解(超详细 图文解释)
270 0
|
网络协议 安全 API
C# Socket网络编程精华篇
C# Socket网络编程精华篇
|
存储 Web App开发 监控
C#Socket编程笔记,Socket 详解,入门简单
目录 一,网络基础 二,Socket 对象 三,Bind() 绑定与 Connect() 连接 四,Listen() 监听请求连接 和 Accept() 接收连接请求 五,Receive() 与 Send() 六,释放资源 七,IPAddress 和 IPEndPoint
575 0