【发布时间】:2015-12-24 11:22:38
【问题描述】:
我正在尝试学习如何编写客户端/服务器应用程序以使用 SSL 将文件传输到服务器或从服务器传输文件。我主要是在 C++ 中使用 cURL 和/或 OpenSSL 弄清楚客户端,但我在服务器端被难住了......我有使用 Perl 和其他 cgi-bin 类型脚本的经验,但我还没有能够查找有关如何在服务器端实际接收数据的任何教程,仅关于证书和身份验证。任何帮助将不胜感激!
【问题讨论】:
我正在尝试学习如何编写客户端/服务器应用程序以使用 SSL 将文件传输到服务器或从服务器传输文件。我主要是在 C++ 中使用 cURL 和/或 OpenSSL 弄清楚客户端,但我在服务器端被难住了......我有使用 Perl 和其他 cgi-bin 类型脚本的经验,但我还没有能够查找有关如何在服务器端实际接收数据的任何教程,仅关于证书和身份验证。任何帮助将不胜感激!
【问题讨论】:
您想使用BIO_s_accept() 系列函数来接受通过 SSL 的连接(示例代码:https://www.openssl.org/docs/manmaster/crypto/BIO_set_bind_mode.html)。您希望BIO_set_accept_bios() 对新连接使用相同的包装器,并希望BIO_set_bind_mode() 继续侦听同一端口上的更多连接。
然后您调用connection = BIO_pop(accept); 以获取代表每个连接的 BIO,您可以将其用于输入和输出。 BIO_free() 完成后。
编辑:为了实际使用,请使用scp,而不是重新发明轮子。
【讨论】:
xinetd可以根据需要启动一个服务器进程。
scp。在正确配置的服务器上,防火墙将不允许您打开新端口。