2014-02-15 1 views
3
public void send(string _msg) 
     { 
      a2 = Encoding.ASCII.GetBytes(_msg); 
      networkStream = clientSocket.GetStream(); 
      networkStream.Write(a2, 0, a2.Length); 
      networkStream.Flush(); 
     } 

Это посыл() способ передачи данных для всех клиентов, но я называю этот метод на кнопку мыши из другого класса, то отправить() метод отправку данных в последний подключенный клиент.Как отправить данные на все подключенные сокет-соединение с использованием TcpClient из другого класса

+0

показать объявление сетиStream – Pierre

ответ

2

Если вы используете 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 
} 
2

Храните список подключенных клиентов. Обновляйте список, когда клиент входит или выходит. Перебирайте список и отправляйте каждому клиенту индивидуально.

Смежные вопросы