ACE之基础篇

利用ACE编程的基本框架
    ACE_INET_Addr类,包装了网络地址
    ACE_SOCK_Connector类,扮演主动连接角色,发起通讯连接。连接到远端的服务。
    ACE_SOCK_Acceptor类,扮演被动连接角色,等待连接。等待远端客户的请求。
    ACE_SOCK_Stream类,扮演数据通讯角色,发送和接收数据。完成客户与服务之间的通讯。

 

    客户端
    1 创建地址对象。(ACE_INET_Addr)
    2 创建主动连接对象。(ACE_SOCK_Connector)
    3 创建数据通讯对象。(ACE_SOCK_Stream)
    4 设置服务器地址。(ACE_INET_Addr::set)
    5 将数据通讯对象和地址作为参数传给主动连接对象,发起主动连接(ACE_SOCK_Connector::connect)
    6 利用通讯对象接收和发送数据。(ACE_SOCK_Stream::recv和ACE_SOCK_Stream::send)
   
    服务器端
    1 创建地址对象。(ACE_INET_Addr)
    2 创建被动连接对象。(ACE_SOCK_Connector)
    3 创建数据通讯对象。(ACE_SOCK_Stream)
    4 设置服务器地址。(ACE_INET_Addr::set)
    5 将地址作为参数传给被动连接对象,启动接收(ACE_SOCK_Acceptor::open)
    6 将数据通讯对象传给被动连接对象,启动接收,接受连接(ACE_SOCK_Connector::accept)
    7 利用通讯对象接收和发送数据。(ACE_SOCK_Stream::recv和ACE_SOCK_Stream::send)

线程

    一个进程的主线程是由操作系统自动生成,如果你要让一个主线程创建额外的线程,可以通过ACE_Thread::spawn() 实现。当一个线程被首次创建时,它的优先级等同于它所属进程的优先级。一个线程的优先级是相对于其所属的进程的优先级而言的。可以通过调用 ACE_Thread::setprio函数改变线程的相对优先级。挂起线程(暂停一个线程的执行),其调用方式:ACE_Thread::suspend(threadHandle) 。相应的,可以通过ACE_Thread::resume(threadHandle) 恢复被挂起的线程的执行。在主函数中调用ACE_Thread::join(threadHandle)可阻塞主函数,直道线程结束才能继续执行。

ACE_Singleton(单体模式)
     ACE_Singleton 会随即想ACE_Object_Manager登记该单体实例,ACE_Object_Manager承担了在程序终止时销毁单体实例的任务,ACE_Unmanaged_Singleton并不向ACE_Object_Manager登记实例,销毁单体需要显示的调用 ACE_Unmanaged_Singleton::close(),一般在DLL种定义单体时采用ACE_Unmanaged_singleton。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值