我正在用C#开发一个FTP服务器,我刚刚用SslStream类实现了FTPS显式模式的功能,一切都很顺利。
我在使用fileZilla > 3.0.11作为客户端时遇到问题。我用谷歌搜索了一下,发现sslstream实现似乎没有正确关闭连接。(不发送close_notify警报)。使用WinScp、SmartFTP和lftp,一切都可以正常工作。
有什么想法或者其他的SSL库吗?
或者使用某种方式对close_notify警报进行硬编码并发送?
具体的代码示例会很棒!
创建sslStream:
_sslStream = new SslStream(socket.GetStream());
var _cert = new X509Certificate2(certPath,pass);
_sslStream.AuthenticateAsServer(_cert);关闭连接:
_sslStream.Close();
socket.Close();
_sslStream = null;
socket = null;FileZilla 3.6.0.2错误日志:
Response: 150 Opening data connection for LIST
Trace: CFtpControlSocket::TransferParseResponse()
Trace: code = 1
Trace: state = 4
Trace: CFtpControlSocket::SendNextCommand()
Trace: CFtpControlSocket::TransferSend()
Trace: state = 5
Trace: CTlsSocket::OnRead()
Trace: CTlsSocket::ContinueHandshake()
Trace: TLS Handshake successful
Trace: TLS Session resumed
Trace: Cipher: AES-128-CBC, MAC: SHA1
Trace: CTransferSocket::OnConnect
Trace: CTransferSocket::OnReceive(), m_transferMode=0
Trace: CTlsSocket::Failure(-110, 0)
Error: GnuTLS error -110 in gnutls_record_recv: The TLS connection was non-properly terminated.
Error: Could not read from transfer socket: ECONNABORTED - Connection aborted
Trace: CTransferSocket::TransferEnd(3)
Trace: CFtpControlSocket::TransferEnd()
Trace: CTlsSocket::OnRead()
Trace: CFtpControlSocket::OnReceive()
Response: 226 LIST successful.发布于 2013-04-09 03:03:29
如果在关闭套接字之前对其调用Shutdown,会发生什么情况?
socket.Shutdown(SocketShutdown.Both);https://stackoverflow.com/questions/15759355
复制相似问题