Передача данных напрямую между двумя подключениями в Indy (TIdContext) - PullRequest
3 голосов
/ 05 марта 2011

У меня есть сервер, на котором запущен TIdTCPServer, и клиент, использующий веб-браузер (или любое другое программное обеспечение) для связи, я не знаю протокол, но я пытаюсь отправить данные между клиентом и другим соединением (оба подключены ктот же TIdTCPServer), например, данные, отправленные первым клиентом, передаются второму клиенту, а данные, отправленные вторым клиентом, передаются первому клиенту, как прокси-сервер (я действительно не могу использовать прокси-сервер, поскольку он только этотусловие) и TIdTCPServer все еще должен получать других клиентов и обрабатывать их данные.

Я наткнулся на первую строку кода, поскольку TIdContext.Connection.Socket.ReadLn требует разделителя, а протокол клиента неизвестенсервер.

есть идеи?

спасибо.

1 Ответ

3 голосов
/ 07 марта 2011

Вы можете посмотреть исходный код для TIdMappedPortTCP и TIdHTTPProxyServer, чтобы увидеть, как они передают произвольные данные между соединениями в обоих направлениях.Оба компонента используют TIdSocketList.SelectReadList(), чтобы определить, есть ли у какого-либо соединения данные для чтения.TIdMappedPortTCP затем использует TIdBuffer.ExtractToBytes() и TIdIOHandler.Write(TIdBytes), тогда как TIdHTTPProxyServer использует вместо TIdTCPStream и TIdBuffer.ExtractToStream().

...