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

layershow 2008-12-05 12:41:43
服务器端:基于 ACE 开发的 SSL Server 程序
程序运行,SSL 端口已打开监听

客户端连接的时候发送 ClientHello 之后,服务器直接 reset TCP 连接
请有经验的专家指点一下可能是哪方面的问题?
...全文
151 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
caixin99 2009-06-15
  • 打赏
  • 举报
回复
up
netelife 2009-06-02
  • 打赏
  • 举报
回复

#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;

int
Options::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;
}


void
Options::run (void)
{
this->oneway_client_test ();
}

static int
run_client (void)
{
// Raise the socket handle limit to the maximum.
ACE::set_handle_limit ();

OPTIONS::instance ()->run ();

return 0;
}

int
ACE_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;
}
DreamFreeLancer 2009-06-01
  • 打赏
  • 举报
回复
本博主正在进行一个开源的通信平台项目,有兴趣的请关注,
项目源码:https://fy2009.googlecode.com/svn/trunk/ fy2009
相关博克:http://blog.csdn.net/dreamfreelancer
member 2009-05-30
  • 打赏
  • 举报
回复
楼主 我想跟你学ACE
344296735
agui1226 2009-05-20
  • 打赏
  • 举报
回复
不知,帮忙up一下~
ACE有支持ssh的类吗?
CPPACE 2009-05-08
  • 打赏
  • 举报
回复
ssl
while(recv()!=-1)
{}
hanbaocheng 2009-05-08
  • 打赏
  • 举报
回复
熟悉ACE_SSL的大大们帮帮忙阿,十万火急阿
hanbaocheng 2009-05-06
  • 打赏
  • 举报
回复
我也有同样的问题,请问大大们是怎么解决的?
hylizj 2009-01-08
  • 打赏
  • 举报
回复
请检查一下协议是否正确?
layershow 2008-12-05
  • 打赏
  • 举报
回复
ACE 封装的是 openssl
星羽 2008-12-05
  • 打赏
  • 举报
回复
up
hhyttppd 2008-12-05
  • 打赏
  • 举报
回复
进来学习
xhs_lh04 2008-12-05
  • 打赏
  • 举报
回复
选择的是验证对方证书模式?还是不验证
服务端证书及私钥是否载入了?
单单这一个问题可能会有多种原因,你先把问题定位一下,缩小点范围才好帮你啊

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧