gpt4 book ai didi

c# - C#以异步方式接受套接字-最佳做法

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

以异步方式接受新套接字的最佳方法是什么。

第一种方式:

while (!abort && listener.Server.IsBound)
{
acceptedSocketEvent.Reset();
listener.BeginAcceptSocket(AcceptConnection, null);

bool signaled = false;
do
{
signaled = acceptedSocketEvent.WaitOne(1000, false);
} while (!signaled && !abort && listener.Server.IsBound);
}

其中AcceptConnection应该是:
private void AcceptConnection(IAsyncResult ar)
{
// Signal the main thread to continue.
acceptedSocketEvent.Set();

Socket socket = listener.EndAcceptSocket(ar);
// continue to receive data and so on...
....
}

或第二种方式:
listener.BeginAcceptSocket(AcceptConnection, null);
while (!abort && listener.Server.IsBound)
{
Thread.Sleep(500);
}

和AcceptConnection将是:
private void AcceptConnection(IAsyncResult ar)
{
Socket socket = listener.EndAcceptSocket(ar);
// begin accepting next socket
listener.BeginAcceptSocket(AcceptConnection, null);
// continue to receive data and so on...
....
}

您偏爱的方式是什么?为什么?

最佳答案

我真的很喜欢第二种方式。从接受连接的事件继续到“BeginAccept”对我来说似乎更具可读性。您甚至可以将监听套接字附加到IAsyncResult,并在您的Accept事件中获取它,以避免使用任何全局变量。

关于c# - C#以异步方式接受套接字-最佳做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2766463/

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