首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求教,ACE 下使用 SSL 的程序,客户端无法连接解决方案

2012-04-11 
求教,ACE 下使用 SSL 的程序,客户端无法连接服务器端:基于 ACE 开发的 SSL Server 程序程序运行,SSL 端口

求教,ACE 下使用 SSL 的程序,客户端无法连接
服务器端:基于 ACE 开发的 SSL Server 程序
程序运行,SSL 端口已打开监听

客户端连接的时候发送 ClientHello 之后,服务器直接 reset TCP 连接
请有经验的专家指点一下可能是哪方面的问题?

[解决办法]
选择的是验证对方证书模式?还是不验证
服务端证书及私钥是否载入了?
单单这一个问题可能会有多种原因,你先把问题定位一下,缩小点范围才好帮你啊
[解决办法]
请检查一下协议是否正确?
[解决办法]

C/C++ code
#include "ace/INET_Addr.h"#include "ace/Log_Msg.h"#include "ace/Singleton.h"#include "ace/Null_Mutex.h"#include "ace/SSL/SSL_SOCK_Connector.h"#include <ace/SSL/SSl_Sock_Stream.h>#ifdef _DEBUG#pragma comment(lib, "ACEd.lib")#pragma comment(lib, "ACE_SSLd.lib")#else#pragma comment(lib, "ACE.lib")#pragma comment(lib, "ACE_SSL.lib")#endif#define TEST_GET_BUFFER "GET / HTTP/1.1\r\nHost: www.paypal.com\r\nUser-Agent: TestSSL-Agent0.1\r\n\r\n"class Options{public:    int oneway_client_test(void);    void run(void);};typedef ACE_Singleton<Options, ACE_Null_Mutex> OPTIONS;intOptions::oneway_client_test (void){    ACE_SSL_SOCK_Stream cli_stream;    ACE_INET_Addr remote_addr (443, "www.paypal.com");    ACE_SSL_SOCK_Connector con;    if (con.connect (cli_stream,        remote_addr) == -1)        ACE_ERROR_RETURN ((LM_ERROR,        ACE_TEXT ("(%P|%t) %p\n"),        ACE_TEXT ("connection failed")),        -1);    else        ACE_DEBUG ((LM_DEBUG,        ACE_TEXT ("(%P|%t) connected to %C at port %d\n"),        remote_addr.get_host_name (),        remote_addr.get_port_number ()));    ACE_DEBUG ((LM_DEBUG,        ACE_TEXT ("(%P|%t) waiting...\n")));    // send the get request..    if ( cli_stream.send_n(TEST_GET_BUFFER, ACE_OS::strlen(TEST_GET_BUFFER)) == -1 )    {        ACE_ERROR(( LM_ERROR,            ACE_TEXT("(%P|%t) %p\n)"),            ACE_TEXT("send_n")));        cli_stream.close();        return -1;    }    char buf[4096];    ACE_INT32 len;    while ( true )    {        if ( (len = cli_stream.recv(buf, sizeof(buf) - 1)) == -1 )        {            ACE_ERROR(( LM_ERROR,                        ACE_TEXT("(%P|%t) %p\n)"),                        ACE_TEXT("recv_n")));            break;        }        if ( len == 0 )            break;        buf[len] = 0;        ACE_DEBUG(( LM_DEBUG, "%s", buf ));    }    // Close the connection.    cli_stream.close ();    return 0;}voidOptions::run (void){    this->oneway_client_test ();}static intrun_client (void){    // Raise the socket handle limit to the maximum.    ACE::set_handle_limit ();    OPTIONS::instance ()->run ();    return 0;}intACE_TMAIN (int argc, ACE_TCHAR *argv[]){    // Initialize the logger.    ACE_LOG_MSG->open (argv[0]);    //if (OPTIONS::instance ()->parse_args (argc, argv) == -1)    //    return -1;    // Run the client    run_client ();    return 0;} 

热点排行