2014-02-17 4 views
0

Мое понимание сейчас о клиент-серверных соединений в C#:Отправить сообщение от сервера (TcpListener) к клиенту (TcpClient)

  • TcpListener = Сервер
  • TCPClient = Client

В альтернативной для этого существует класс «Socket», который может использоваться как Клиент и как Сервер, но в конце ли оба варианта одно и то же !?

Я понимаю TCPClient. Он имеет метод getStream(), который возвращает NetWorkStream, который имеет методы для чтения и записи из/в поток.

Моя проблема - TCPListener на стороне сервера. TCPListener не имеет метода getStream(), а также не имеет метода чтения/записи. Как я могу читать/писать из TCPListener из/в поток?

+0

' while (true) { var tcpClient = tcpListener.AcceptTcpClient(); /* использование tcpClient */ } ' –

ответ

0

TcpListener позволяет принимать входящие соединения, используя, например. метод AcceptTcpClient. Это возвращает экземпляр TcpClient, который вы можете использовать для двунаправленной связи с клиентом.

TCP - это протокол, основанный на соединениях, поэтому вы не можете действительно отправлять или получать данные, не устанавливая соединение первым - это относится как к клиенту, так и к серверу.

2

TCP поддерживает двунаправленную передачу. Как только соединение установлено, разница между клиентом и сервером невелика.

Вы должны использовать TcpListener.AcceptTcpClient, чтобы установить соединение и предоставить серверной стороне свой экземпляр TcpClient.

Вы упомянули о отправке сообщений в свой вопрос. Важно иметь в виду, что если вы работаете на этом низком уровне с TCP, нет никакого встроенного слоя обмена сообщениями - вызовы Send на одном конце: нет соответствует 1-1 с вызовами Receive с другой стороны конец. Если вам нужен обмен сообщениями, вы должны создать это самостоятельно поверх этих примитивов или переключиться на более высокоуровневую сетевую библиотеку (например, WCF), которая автоматически скрывает этот уровень детализации.


В основном, TcpListener класс действует вдоль линий «я намерен дать людям возможность соединиться со мной» - и призывает к Accept* как методы являются способ сказать «если кто-нибудь в настоящее время просят соединить со мной, давайте создадим это соединение и начнем говорить «

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