socket()
возвращает дескриптор файла, если это то, на что вы ссылаетесь как идентификатор сокета, тогда способы его получения без совместной работы процесса в Windows ограничены. FWIW в Linux открытых FDs перечислены в файловой системе proc.
Это, как говорится, единственное, что вы могли бы сделать с fd, - это отправить дополнительную информацию из сокета. Вы также можете читать с fd, но любые данные, прочитанные таким образом, будут отправлены не в в приложение, которому принадлежит сокет. Без некоторой координации это, вероятно, не будет тем, что вы хотите, поскольку вы просто получите бит и кусочки данных.
Если вы хотите, чтобы вы могли прослушивать трафик в вашей программе, то что-то вроде фильтрации пакетов должно быть достаточно, поэтому я предполагаю, что вы действительно хотите быть похожим на человека посередине.
Если это так, то лучше всего будет установить приложение в качестве прокси для другой службы.
Под этим я подразумеваю, что программа, открывающая прослушивающий порт и принимающая соединения при запуске соединения, должна немедленно открыть свое собственное соединение с предварительно настроенной комбинацией IP: port и начать трафик пересылки. Как только это будет написано, просто проверить транспорт перед отправкой и, возможно, изменить его.
Если ваша программа является сервером, запустите его на нестандартном порту, настройте это приложение, чтобы открыть обычный порт сервера, а затем перенаправить соединения на нестандартный порт, который вы настроили на localhost.
Если ваша программа является клиентом, просто укажите приложение-перехватчик на сервере и выберите случайный порт прослушивания на вашем поле. Затем настройте клиент для подключения к этому порту прослушивания, как если бы это был сервер.
Это должно работать практически во всем. Единственное предупреждение - если шифрование трафика зашифровано, вы, очевидно, не сможете его проверить или изменить. Это фактически то же самое, что и размещение приложения за NAT.
Дубликат http://stackoverflow.com/questions/2742763/how-to-get-socket-id-handle-descriptor-for-an-already-open-connection-net-c – dzendras
Ответ на ошибку , Не может получить Socket ID. Если я ошибаюсь, пожалуйста, поправьте меня в форме ответа, так как это то, что я ищу. – Nick