Когда мне обычно понадобятся разные порты для связи клиент-сервер?
(Этот вопрос для C # и общего программирования сокетов).
Я реализовал и использую простое клиент-серверное приложение C #. В основном:
- сервер слушает клиента
- принято / подключено
- клиентский поток порождения сервера -
- сервер ждет, пока клиент заговорит
- разговор с клиентом
- ответ сервера
- разговор с клиентом
- сервер отвечает и т. Д.
если клиент перестает говорить, сервер блокируется в режиме NetworkStream.Read()
навсегда в этом порожденном потоке, если только клиентская сторона не отключится.
Я сейчас думаю о ситуации, когда обе стороны хранят молчание, пока какое-либо событие не произойдет с обеих сторон, тогда только клиент или сервер будут передавать данные. Таким образом, оба должны быть как-то одновременно в режиме NetworkStream.Read, а также иметь возможность отправлять друг другу одновременно (если событие происходит с обеих сторон одновременно).
Нужны ли нам разные порты в этом случае, или клиент и сервер могут находиться в режиме NetworkStream.BeginRead, не рискуя проблемой, когда NetworkStream одновременно находится в режиме записи и отправки?
Спасибо.