2017-01-29 14 views
0

Я выполнил команду this tutorial, чтобы настроить клиентское приложение -> серверное приложение на основе TCP-приложений, где сервер получает файл от клиента, и он работает хорошо. Резюме структуры будет:C# Использование TcpListener как на клиенте, так и на сервере

Сервер использует TcpListener слушать

Клиент использует TcpClient отправить

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

Сервер использует TcpClient отправить

Клиент использует TcpListener слушать

Однако я получаю следующее ошибки:

Только одно использование каждого из них адрес протокола (протокол/сетевой адрес/порт), как правило, разрешен

Это потому, что клиент и сервер слушают тот же порт, что и ошибка? Как еще я могу отправлять и получать файлы в обоих направлениях?

Мой код - это точный код, указанный в этой теме, который я связал, поэтому я не размещал его здесь. Дайте мне знать, если я должен разместить свой код здесь, а :)

+0

Обычно не рекомендуется использовать TcpListener на клиенте, потому что может быть трудно читать клиент с сервера (межсетевой экран, NAT и т. Д.). Что именно вы пытаетесь сделать? Может быть, клиент может сначала запросить этот файл, а затем сервер отправит его в ответ? – Evk

+0

Я пытаюсь отправить файл с сервера на клиент @ Evk. Я уже сделал функциональность для отправки файла с клиента на сервер. Мне нужно сделать обратное, так что это двухсторонняя связь. – Dinuka

+0

Я имею в виду, что клиент может сначала запросить этот файл (отправить что-то на сервер, что означает «дать мне файл X»), и сервер отправит этот файл в ответ (по тем же канал). Tcp уже является двусторонней связью, поэтому для этого вам не нужны отдельные каналы. – Evk

ответ

1

Как и другие отметили, что вы пытаетесь сделать, это не очень хорошая идея, но ответить на ваш вопрос:

Ошибка является довольно само за себя. Вы пытаетесь использовать номер порта, который уже используется. Поэтому просто используйте другой номер порта. (Параметр PortN в учебнике.) Другими словами, одна пара TcpListener и TcpClient обменивается данными через порт X, а другая (обратная) пара связывается через порт X + 1.

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

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