zoukankan      html  css  js  c++  java
  • Symbian Cactive和RSocket笔记(转)

    Symbian 异步服务框架

    您的浏览器可能不支持显示此图像。

    1. CActive活动对象

    活动对象主要用于向Asynchronous Servie Provider提交异步请求和取消异步请求;提交异步请求调用SetActive();DoCancel()函数用来取消异步请求;

    在实现异步对象时,一定要实现RunL()和DoCancel()这两个函数;RunL()函数由CActiveScheduler活动调度器调用,而DoCancel()函数在取消异步请求时调用。 

    2. CActiveScheduler活动调度器

    活动调度器实际上是一个“等待循环”,它一直等待事件。当接收到标记事件发生的信号时,活动调度器从从多可能的事件中判断那个事件发生,然后调度合适活动对象的RunL()函数来执行。

    注意:每个RThread都有一个CActiveScheduler, 而每个CActiveScheduler可以处理多个CActive,通过add()函数来添加CActive。 

    3. Asynchronous Servie Provider异步服务提供者

    Asynchronous Servie Provider有很多种,可以根据不同的需求来选择。 

    Symbian中使用TCP/IP协议进行通信

    Symbian系统中网络编程主要支持IP,ICMP, TCP和UPD协议;主要使用RSocketServer,RSocket,RHostResolver和TInetAddr。

    RSocketServer:用来建立和内核端socket服务组件之间的连接以及相关资源。应用程序中所有与socket相关的操作都要该类的一个实例来进行操作。

    RSocket:用来建立连接,发送和接受数据等等。

    RHostResolver:域名解释。

    TInetAddr:用来保存地址和端口。 

    1. 如何应用RSocket

    范例:

      Tint err;

      RSocketServ ss;

      RSocket sock;

      err = ss.Connect();

      err = sock.Open(ss, KAfInet, KSockStream, KProtocolInetTcp);

    每一个RSocket在Open时都要有一个RSocketServ实例,而其他参数如下:

    AddrFamily:KAfInet or KAfInet6 for IPv6

    socketType:KSockStream(TCP/IP)or KSockDatagram for UDP

    protocol:KProtocolInetTCP or KProtocolInetUDP 

    1. 如何connect和disconnect

    RSocket::Connect()用于连接到远端服务器,参数如下:

    AddrFamily:KAfInet or KAfInet6 for IPv6

    socketType:KSockStream(TCP/IP)or KSockDatagram for UDP

    protocol:KProtocolInetTCP or KProtocolInetUDP

    注意:如果socket采用的是UDP协议,则不需要connect。

    RSocket::CancelConnect()用于取消连接

    RSocket::Shutdown()用于异步的关闭连接。 

    1. 如何获取和设置IP地址

    RSocket::LocalName()用于获取本地的地址信息,类型为TInetAddr

    RSocket::Bind()用于绑定socket地址,类型为TInetAddr。

    注意:在调用RSocket::Listen必须先Bind地址

    RSocket::RemoteName()用于获取远端服务器地址信息。 

    1. 发送和接收数据

    发送数据

    RSocket::Send()采用TCP/IP协议的

    RSocket::SendTo()采用UDP协议的

    发送数据

    RSocket::Recv(), RSocket::Read(), RSocket::RecvOneOrMore()采用TCP/IP协议

    RSocket::RecvFrom()采用UDP协议 

    1. 域名解释

    使用RHostResolver类进行域名的解释和反解释,使用前要先调用RHostResolver::Open(),使用后要调用RHostResolver::Close()关闭

    而获取域名信息主要用下面两个函数

    RHostResolver::GetByName()

    RHostResolver::GetByAddress();

  • 相关阅读:
    自信你就赢了
    记移动开发者大会中国(MDCC)
    Android Google Map V2想说爱你不容易
    关于用好Android资料的一些总结和反思
    按钮添加四种点击事件
    Google的可穿戴设备Android Wear抢先看
    跟上潮流,做个微信开发者平台
    我也开始玩儿硬件——树莓派入门
    我也来自己做刷机包
    简单谈谈eclipse下搭建PhoneGap环境来开发Android程序
  • 原文地址:https://www.cnblogs.com/yaoliang11/p/1855421.html
Copyright © 2011-2022 走看看