【发布时间】:2014-05-05 21:22:41
【问题描述】:
我有一类已登录的客户端:
public class LoggedIn_Class
{
public Socket socket;
public string name;
}
我有一个清单:
public static List<Object> LoggedIn_List = new List<Object>();
当有人登录我的服务器时,我将其添加到列表中:
LoggedIn_Class newClient = new LoggedIn_Class();
newClient.socket = currentSocket;
newClient.name = currentName;
LoggedIn_List.Add(newClient);
现在我正在尝试向每个客户端发送一个数据包:
foreach (LoggedIn_Class s in variables.LoggedIn_List.ToArray())
{
s.socket.Send(Packet);
}
现在的问题是 foreach 处理项目太快而无法发送。这可以正常工作,但我认为这不是最好的解决方案...
foreach (LoggedIn_Class s in variables.LoggedIn_List.ToArray())
{
s.socket.Send(Packet);
Thread.Sleep(50);
}
有人对此有任何想法吗?我该怎么做才能等待发送结束?
【问题讨论】:
-
你用的是什么类型的socket?什么协议?有例外吗?它是如何“不起作用”的?
-
Socket.Send是一种同步操作——即它仅在您的数据发送后返回。您似乎将它与异步混淆(通过您描述它并查看您的方法)。这里还有其他问题。您是否有任何异常或有什么问题? -
我正在使用 TCP 套接字。客户端只是没有收到数据包,它没有任何异常。