在C#中实现各种类型TCP和UDP服务器的示例代码

文章详细介绍了如何在C#中使用TcpListener和UdpClient类创建TCP和UDP服务器,包括启动、监听客户端连接以及基本的数据收发过程。提示读者注意可能的扩展需求。
摘要由CSDN通过智能技术生成

以下是一些在C#中实现各种类型TCP和UDP服务器的示例代码:
TCP服务器:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

public class TcpServer
{
    private TcpListener listener;
    private Thread listenThread;

    public TcpServer(IPAddress ipAddress, int port)
    {
        listener = new TcpListener(ipAddress, port);
    }

    public void Start()
    {
        listener.Start();
        Console.WriteLine("Server started.");

        listenThread = new Thread(ListenForClients);
        listenThread.Start();
    }

    public void Stop()
    {
        listener.Stop();
        listenThread.Join();
        Console.WriteLine("Server stopped.");
    }

    private void ListenForClients()
    {
        while (true)
        {
            TcpClient client = listener.AcceptTcpClient();
            Thread clientThread = new Thread(HandleClient);
            clientThread.Start(client);
        }
    }

    private void HandleClient(object clientObj)
    {
        TcpClient client = (TcpClient)clientObj;
        NetworkStream stream = client.GetStream();

        byte[] buffer = new byte[1024];
        int bytesRead;

        while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
        {
            string message = Encoding.ASCII.GetString(buffer, 0, bytesRead);
            Console.WriteLine("Received message: " + message);

            byte[] response = Encoding.ASCII.GetBytes("Message received.");
            stream.Write(response, 0, response.Length);
        }

        client.Close();
    }
}

UDP服务器:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

public class UdpServer
{
    private UdpClient server;
    private IPEndPoint endPoint;

    public UdpServer(IPAddress ipAddress, int port)
    {
        server = new UdpClient(port);
        endPoint = new IPEndPoint(ipAddress, port);
    }

    public void Start()
    {
        Console.WriteLine("Server started.");

        while (true)
        {
            byte[] receivedData = server.Receive(ref endPoint);
            string message = Encoding.ASCII.GetString(receivedData);
            Console.WriteLine("Received message: " + message);

            byte[] responseData = Encoding.ASCII.GetBytes("Message received.");
            server.Send(responseData, responseData.Length, endPoint);
        }
    }

    public void Stop()
    {
        server.Close();
        Console.WriteLine("Server stopped.");
    }
}

使用这些示例代码,你可以创建一个TCP或UDP服务器并监听指定的IP地址和端口。在TCP服务器中,每当有客户端连接时,会创建一个新的线程来处理客户端请求。在UDP服务器中,通过Receive方法接收客户端发送的数据,并通过Send方法向客户端发送响应。
请注意,这些示例代码只是基本的服务器实现,你可能需要根据自己的需求进行修改和扩展。
 

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Unity 服务器通信协议可以使用多种方式,例如: 1. TCP/IP协议:通过使用Socket或TcpClient等Unity自带的类库实现。 2. UDP协议:通过使用UdpClient等Unity自带的类库实现。 3. HTTP协议:通过使用HttpWebRequest或HttpClient等Unity自带的类库实现。 而在Unity实现HTTP通信,可以使用以下步骤: 1. 在Unity创建一个空对象,并为其添加一个C#脚本。 2. 在脚本使用HttpWebRequest或HttpClient等Unity自带的类库,发送HTTP请求。 3. 处理服务器返回的响应,例如解析JSON或XML数据。 以下是一个简单的HTTP GET请求的示例代码: ```csharp using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Net; using System.IO; public class HttpExample : MonoBehaviour { // URL to request private const string url = "https://api.github.com/"; // Start is called before the first frame update void Start() { // Create a new HttpWebRequest HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; // Send the request and get the response HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Read the response stream Stream dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string responseText = reader.ReadToEnd(); // Log the response to the console Debug.Log(responseText); // Clean up resources reader.Close(); dataStream.Close(); response.Close(); } } ``` 该示例使用HttpWebRequest类发送了一个HTTP GET请求,并打印了响应文本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BEN654776577

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值