我有一個類的記錄在客戶端: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