欢迎来到天天文库
浏览记录
ID:40569255
大小:39.00 KB
页数:6页
时间:2019-08-04
《Socket模拟Http连接之初识Socket》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Socket模拟Http连接之初识Socket在Symbian上使用Socket需要库的支持,即你需要引入头文件es_sock.h和esock.lib库,准备一个活动对象类,比如classSocketConnection:publicCActive(1)声明RSocketServiSocketServ;它是用来连接Symbian系统中Soket服务的类,并不是我们一般意义上的SocketServer,在Symbian中实现类似于Java中SocketServer功能的类实际上是RSocket。(2)连接系统的Socket服务,即,iSocket.Connect();(3)声明RSocket对
2、象iSocket作为一个发送请求的SocketClient。(4)打开连接(其实只是初始化RSocket对象,并不是真的打开了连接,连地址都没给呢,它上哪打开去啊~),即iSocket.Open(iSocketServ,KAfInet,KSockStream,KProtocolInetTcp);方法中参数含义为,#param1已经连接成功的Socket服务对象,即(1)中提到的iSocketServ;#param2KAfInet,代表该套接字为因特网套接字;#param3KSockStream可靠的面向连接的套接字;#param4KProtocolInetTcpTCP控制传输协议。(5)编写
3、连接方法,如SocketConnect(constTDesC&aServerName,TIntaServerPort);其中#param1主机名称;#param2主机端口,首先判断aServerName是否为IP地址,如果是则进入连接过程,如果不是则通过DNS对主机名进行解析从而得到IP地址,无论是连接还是解析,这两个过程都是异步的,故拦截或者取得解析结果都有在RunL中完成。判断一个主机名是不是IP地址,可以通过TInetAddr类完成,它依赖于in_sock.h头文件和insock.lib库,具体用法如下:TInetAddraddr;if(addr.Input(*m_pServerNam
4、e)==KErrNone){ //进入连接过程}else{ 进入解析过程}(6)通过DNS解析主机名地址,使用RHostResolver对象,利用它的Open方法和GetByName方法即可,如m_Resolver.Open(m_SocketServer,KAfInet,KProtocolInetUdp);此处的参数与前面RSocket的Open方法略有不同!Socket网络连接这样写就可以了。m_Resolver.GetByName(*m_pServerName,m_NameEntry,iStatus);通过GetByName方法把参数传给RHostResolver对象内。最后SetA
5、ctive()来启动活动对象。在活动对象内取得结果,具体代码随后附上。(7)进入连接过程,连接过程比较简单,有如下步骤: TInetAddraddr; addr.SetPort(m_ServerPort); addr.SetAddress(aAddr); m_Socket.Connect(addr,iStatus);执行完以上步骤后就可以启动活动对象了。通过以上步骤,我们就可以通过Socket连接某一个网站了,整个代码后面会给出,该代码只是连接部分,我们会在下一次继续介绍,如果处理Socket的读写功能。尽管现在的代码还有诸多不完善的地方,我们会在以后的讲解中一步步填充完整。
6、#ifndefSOCKETCONNECTION_H#defineSOCKETCONNECTION_H//INCLUDES#include#include#include//RSocketServ,RSocket#include//TInetAddr//CLASSDECLARATIONenum{ ENotConnected,ELookingUp,EConnecting,EConnected};classCSocketConnection:publicCActive{ public: ~CS
7、ocketConnection(); staticCSocketConnection*NewL(); staticCSocketConnection*NewLC(); voidConnectServer(constTDesC&aServerName,TIntaServerPort); protected: //fromCActive virtua
此文档下载收益归作者所有