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

来源:互联网 发布:数据标准化的作用 编辑:程序博客网 时间:2024/05/16 05:01

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

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

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

RHostResolver:域名解释。

TInetAddr:用来保存地址和端口。
如何应用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
如何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()用于异步的关闭连接。
如何获取和设置IP地址

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

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

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

RSocket::RemoteName()用于获取远端服务器地址信息。
发送和接收数据

发送数据

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

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

发送数据

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

RSocket::RecvFrom()采用UDP协议
域名解释

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

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

RHostResolver::GetByName()

RHostResolver::GetByAddress();