Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как научить TcpListener видеть нескольких клиентов? / 8 сообщений из 8, страница 1 из 1
21.07.2004, 16:17
    #32615221
zenon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как научить TcpListener видеть нескольких клиентов?
Подскажите, как научить TcpListener устанавливать соединение с несколькими клиентами.

У меня такой код:
.......
//Открываем порт, запускаем TcpListener
int portNumber = 4000;
TcpListener tcpListener = new TcpListener(portNumber);
tcpListener.Start();
Console.WriteLine("Ожидание соединения....");

//Слушаем сеть и устанавливаем соединение
TcpClient tcpClient = tcpListener.AcceptTcpClient();
Console.WriteLine("Соединение установлено.");
networkStream = tcpClient.GetStream();
.......

В этом случае TcpListener обрабатывает только одного (первого) клиента, который подключился к выделенному порту. Можно ли сделать так, чтобы после установления соединения TcpListener'а с одним клиентом он продолжал слушать сеть и обрабатывал запросы на подключение (к этому же порту) других клиентов?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
23.07.2008, 19:57
    #35448214
новичек C#
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как научить TcpListener видеть нескольких клиентов?
тоже кстати волнует эта проблема, может кто нибудь все подскажет ?
...
Рейтинг: 0 / 0
23.07.2008, 20:11
    #35448225
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как научить TcpListener видеть нескольких клиентов?
новичек C#тоже кстати волнует эта проблема, может кто нибудь все подскажет ?
Если коротко - создается класс - который принимает подключившегося клиента, создает в отдельном потоке процесс, который будет с клиентом взаимодействовать, и запускает этот поток. Сам же продолжает ждать следующего клиента.
Можно сделать без многопоточности (если клиентов не будет много) - по тому же принципу - получив вызов от клиента, текущий TcpListener сохраняется в список, взамен содается новый, свободный,
А сам список подключенных TcpListener переодически опрашивается - получено что-то от клиента или нет...
...
Рейтинг: 0 / 0
23.07.2008, 20:13
    #35448227
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как научить TcpListener видеть нескольких клиентов?
D129который будет с клиентом взаимодействовать - *** - , и запускает этот поток.
забыл написать " передает этому потоку подключенный TcpListener "
...
Рейтинг: 0 / 0
23.07.2008, 21:40
    #35448279
Roman S. Golubin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как научить TcpListener видеть нескольких клиентов?
D129А сам список подключенных TcpListener переодически опрашивается - получено что-то от клиента или нет...
Не понял, для чего вам нужен "список TcpListener"? TcpListener достаточно одного. А затем передаете каждый TcpClient в свой отдельный поток или ставите в очередь в пул потоков.
То есть, на примере топикстартера:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
int portNumber = 4000;
TcpListener tcpListener = new TcpListener(portNumber);
tcpListener.Start();

while (true)
{
  //Слушаем сеть и устанавливаем соединение
  TcpClient tcpClient = tcpListener.AcceptTcpClient();
  ThreadPool.QueueUserWorkItem (DoProcess, tcpClient);
}


void DoProcess (object clientObject)
{
  using (TcpClient tcpClient = (TcpClient) client)
  using (NetworkStream stream = tcpClient.GetStream())
  {
...
  }
}
...
Рейтинг: 0 / 0
24.07.2008, 11:14
    #35448917
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как научить TcpListener видеть нескольких клиентов?
Roman S. Golubin D129А сам список подключенных TcpListener переодически опрашивается - получено что-то от клиента или нет...
Не понял, для чего вам нужен "список TcpListener"? TcpListener достаточно одного. А затем передаете каждый TcpClient в свой отдельный поток или ставите в очередь в пул потоков.

Да, я это и хотел сказать.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
30.05.2014, 07:18
    #38656596
Viktor12345
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как научить TcpListener видеть нескольких клиентов?
Roman S. Golubin

Спс за пример, но проявлю немного наглости, а как с NetworkStream считать все данные и тогда, и как на стороне клиента отаслать данные серверу.
Зарание благодарю если даже и не захочешь ответить на столь наглую простбу )))
...
Рейтинг: 0 / 0
30.05.2014, 11:46
    #38656835
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как научить TcpListener видеть нескольких клиентов?
Viktor12345NetworkStream считать все данные и тогда, и как на стороне клиента отаслать данные серверу

А вы не умеете писать и читать данные в обычные потоки? NetworkStream ненамного отличается от них по поведению.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как научить TcpListener видеть нескольких клиентов? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]