2016-11-15 5 views
0

Я использую Tcplistener для прослушивания порта для запросов. Когда запросы поступают от клиента, я хочу знать, что клиент ip делает запрос. проблема в том, что сервер и все клиенты принимают одинаковые IpКак я могу отправить сообщение от сервера к клиенту с помощью порта?

поэтому я решил отправить массаж с сервера на клиент по порту ... Я много искал в google Но я не знал, как я могу отправить сообщение от от сервера к клиенту с помощью порта? так может ли кто-нибудь помочь мне?

ответ

0

Клиенты не прослушивает входящих соединений, так что единственный способ для сервера, чтобы отправить сообщение для клиента с использованием подключения к существующих, который ранее был создан клиентом.

Вам не нужно указывать номер порта при отправке сообщений на существующую связи, сервер может просто использовать:

Socket handlerSocket = tcpListener.AcceptSocket(); 
// a connection is now established, "handlerSocket" can be used for both receiving and sending messages 
handlerSocket.Send(...); 

Ваших клиентов в настоящее время передачи данных и немедленно закрыть соединение, хотя, вы» придется изменить их для чтения данных из NetworkStream, чтобы получить что-либо.

Существует множество учебных пособий, я думаю, вы просто ошиблись в Google. Вы пробовали что-то вроде c# chat tutorial?

+0

ОК ясно спасибо, я попробую ваше решение @ C.Evenhuis – kernal

0

Вы используете их все на одном компьютере. Вот почему IP всегда один и тот же.

SOP для такого рода вещей состоит в том, чтобы иметь два порта: порт управления и порт данных.

Путь это работает:

  • Порт управления используется для установления соединения.
  • После успешного соединения сервер и клиент согласовывают набор портов, которые будут использоваться для данных (порт данных локального сервера и порт данных удаленного клиента).
  • Сервер устанавливает соединение с удаленным клиентским портом данных из порта данных локального сервера.
  • Клиент выдает запрос на данные (например, команду) через порт управления.
  • Сервер отправляет информацию обратно через порт данных.
+0

FTP использует это, поэтому порт управления не занят во время больших передач файлов - но даже на порте управления данные передаются в обоих направлениях. Для простой связи вам не нужно два активных подключения для разговора, независимо от того, находитесь ли вы на одном компьютере. –

+1

Если вы посмотрите на снимок @ C.Evenhuis, вы заметите, что он пытается сделать именно это, передачу файлов. – JuanR

+0

У вас есть точка там, если требуется двусторонняя связь _during_ для передачи файла, ваше решение решит это. –

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

  • Нет связанных вопросов^_^