gpt4 book ai didi

c# - TCP 服务器一次只接受来自一台 iOS 设备的消息

转载 作者:可可西里 更新时间:2023-11-01 02:43:40 26 4
gpt4 key购买 nike

我使用 C# 创建一个 TCP 服务器来连接到 iOS 设备。但是,我发现它一次只能接受一台 iOS 设备。我不知道是什么问题。谁能看看是什么问题?

            IPAddress ipadr = IPAddress.Parse(localIP);
System.Net.IPEndPoint EndPoint = new System.Net.IPEndPoint(ipadr, 8060);
newsock.Bind(EndPoint);
newsock.Listen(10);
client = newsock.Accept();
IPEndPoint clientip = (IPEndPoint)client.RemoteEndPoint;
while (true)
{
if (!isDisConnected)
{
data = new byte[1024];
recv = client.Receive(data);
if (recv == 0)
break;
string receivedText = Encoding.ASCII.GetString(data, 0, recv);
}
client.Close();
newsock.Close();

最佳答案

有两种套接字:用于监听的套接字(它永远不会连接)和对应于连接的套接字(每个套接字代表一个连接)。

Accept 向您返回一个已连接到客户端的套接字,该套接字刚刚被接受。每次调用 Accept 都会接受一个新的独立客户端。

如果您想一次处理多个客户端(这几乎总是需要的),您必须确保对 Accept 的调用始终处于挂起状态,以便可以接受新客户端。

实现此目的的一个简单模型是永远在循环中接受并为您接受的每个客户端启动一个线程:

while (true) {
var clientSocket = listeningSocket.Accept();
Task.Factory.StartNew(() => HandleClient(clientSocket));
}

关于c# - TCP 服务器一次只接受来自一台 iOS 设备的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24494041/

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