我有一个类的记录在客户端:TCP套接字快速分组发送
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);
}
有人对此有任何想法吗?我能做些什么来等待发送结束?
您正在使用什么样的插座呢?什么协议?是否有例外?它如何“不起作用”? – Dariusz
'Socket.Send'是一个同步操作 - 只有在你的数据被发送后才会返回。你似乎把它与异步混淆(通过你描述它并看着你的方法)。这里还有其他问题。你有什么异常或有什么问题? – oleksii
我正在使用TCP套接字。客户端只收不到数据包,没有任何异常。 – David