gpt4 book ai didi

c# - 如何使用线程池处理新线程中的每个连接

转载 作者:行者123 更新时间:2023-12-03 11:50:55 25 4
gpt4 key购买 nike

我有一台简单的服务器,它在等待客户端连接,读取传入的流并向其发送消息。我想做的是让每个连接都由单独的线程处理。这是我第一次使用C#使用套接字和线程,我发现的大多数示例确实令人困惑,因此非常感谢任何帮助或简单示例。

这就是我现在所拥有的。

using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text;

[STAThread]
static void Main(string[] args)
{
TestServer ts = new TestServer();
ts.Start();
}

class TestServer
{
private readonly int port = 48888;
private readonly IPAddress ip = IPAddress.Parse("127.0.0.1");

private TcpListener listener;

public TestServer()
{
this.listener = new TcpListener(this.ip, this.port);
}

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

Socket s;
Byte[] incomingBuffer;
int bytesRead;
Byte[] Message;

while (true)
{
s = this.listener.AcceptSocket();

incomingBuffer = new Byte[100];
bytesRead = s.Receive(incomingBuffer);
string message = "Hello from the server";
Message = Encoding.ASCII.GetBytes(message.ToCharArray());

s.Send(Message);
}
}
}

最佳答案

试试这个:

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

while (true)
{
Socket s = this.listener.AcceptSocket();
ThreadPool.QueueUserWorkItem(this.WorkMethod, s);
}
}

private void WorkMethod(object state)
{
using (Socket s = (Socket)state)
{
byte[] buffer = new byte[100];
int count = s.Receive(buffer);
string message = "Hello from the server";
byte[] response = Encoding.ASCII.GetBytes(message);
s.Send(response);
}
}

关于c# - 如何使用线程池处理新线程中的每个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1724596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com