2010-10-29 3 views
1

Я использую API TransmitFile с портами ввода-вывода для эффективного многопоточного файлового сервера в Windows.TransmitFile + SChannel

Все это прекрасно работает, но теперь я также использовал защищенные сокеты, используя SChannel. Поскольку TransmitFile передает файл непосредственно в сокет, я не вижу способа вызвать EncryptMessage - мне нужно будет прочитать файл в кусках, зашифровать и передать их вручную?

Это кажется немного глупым, когда TransmitFile предоставляется с единственной целью высокопроизводительной передачи файлов, а безопасные сокеты - довольно обычное явление. Интересно, что делает IIS, считая, что TransmitFile был реализован для IIS в первую очередь?

(я изначально сделал «TransmitFile» и «EncryptMessage» гиперссылок, но защита от спама допускается только один - извините)

ответ

2

TransmitFile используется IIS, но не для зашифрованных данных. Я не знаю, что он на самом деле делает, но признается, что добавление шифрования существенно замедлит работу.

TransmitFile напрямую использует кеши OS, и любая операция побайтно (например, шифрование) означает, что это невозможно.

Я вижу, что IIS7 специально рекламируется как improving SSL performance, выполняя работу в ядре.

+0

Хорошо, это имеет смысл. Есть ли способ «заблокировать» сокет/дескриптор, чтобы какие-либо операции перекрытия, которые я инициировал, на самом деле ничего не записывали до тех пор, пока я не разблокирую его? Я полагаю, что, вероятно, нет, но стоит проверить, прежде чем написать собственное решение, которое может стать довольно сложным. –

+0

@Jamie M - не то, что я знаю, но я бы опубликовал это как новый вопрос, чтобы вы получили самую лучшую информацию. –

+0

Хорошо - спасибо за помощь! –