Если вы используете TCP-соединение для каждого подключенного клиента, каждый клиентский сокет представляет одно соединение с одним клиентом. Следовательно, из фрагмента кода, который вы показываете выше, он просто отправляет сообщение одному клиенту, клиент получает сообщение, зависит от того, что вы держите в переменной clientSocket (в этом случае ваша проблема отправляется только последнему подключенному клиенту). Чтобы отправить сообщение всем клиентам, вы должны повторить вызов функции записи для каждого подключенного клиента. Ниже приведен фрагмент кода для отправки сообщения каждому клиенту (с учетом переменной ClientSocket):
public void sendMessage(Socket clientSocket, string _msg)
{
a2 = Encoding.ASCII.GetBytes(_msg);
networkStream = clientSocket.GetStream();
networkStream.Write(a2, 0, a2.Length);
networkStream.Flush();
}
Затем, каждый раз, когда вы принимаете новый клиент, вы должны держать гнездо для дальнейшей обработки (например, отправки или получения сообщение), пока соединение не будет закрыто. Посмотрите на код ниже:
ArrayList arrSocket = new ArrayList(); // Declaration for holding dynamic array of socket
........
arrSocket.Add(tcpListener.AcceptSocket()); // For adding new connected client to the dynamic array
........
foreach (object obj in arrSocket) // Repeat for each connected client (socket held in a dynamic array)
{
Socket socket = (Socket)obj;
sendMessage(socket, "your message here"); // call the above sendMessage function for sending message to a client
}
показать объявление сетиStream – Pierre