- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Socket模拟Http连接之初识Socket
Socket模拟Http连接 之 初识Socket
在Symbian上使用Socket需要库的支持,即你需要引入头文件es_sock.h和esock.lib库,准备一个活动对象类,比如class SocketConnection : public CActive
(1)声明RSocketServ iSocketServ;它是用来连接Symbian系统中Soket服务的类,并不是我们一般意义上的SocketServer,在Symbian中实现类似于Java中SocketServer功能的类实际上是RSocket。
(2)连接系统的Socket服务,即,iSocket.Connect();
(3)声明RSocket对象 iSocket作为一个发送请求的SocketClient。
(4) 打开连接(其实只是初始化RSocket对象,并不是真的打开了连接,连地址都没给呢,它上哪打开去啊~),即 iSocket.Open(iSocketServ,KAfInet,KSockStream,KProtocolInetTcp); 方法中参数含义为,#param1 已经连接成功的Socket服务对象,即(1)中提到的iSocketServ;#param2 KAfInet,代表该套接字为因特网套接字;#param3 KSockStream 可靠的面向连接的套接字;#param4 KProtocolInetTcp TCP控制传输协议。
(5)编写连接方法,如SocketConnect(const TDesC aServerName,TInt aServerPort);其中#param1 主机名称;#param2 主机端口,首先判断aServerName是否为IP地址,如果是则进入连接过程,如果不是则通过DNS对主机名进行解析从而得到IP地址,无论是连接还 是解析,这两个过程都是异步的,故拦截或者取得解析结果都有在RunL中完成。判断一个主机名是不是IP地址,可以通过TInetAddr类完成,它依赖 于in_sock.h头文件和insock.lib库,具体用法如下:
TInetAddr addr;if ( addr.Input( *m_pServerName ) == 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对象内。最后SetActive()来启动活动对象。在活动对象内取得结果,具体代 码随后附上。
(7)进入连接过程,连接过程比较简单,有如下步骤:
??? TInetAddr addr;??? addr.SetPort( m_ServerPort );??? addr.SetAddress( aAddr );??? m_Socket.Connect( addr , iStatus );
执行完以上步骤后就可以启动活动对象了。
通过以上步骤,我们就可以通过Socket连接某一个网站了,整个代码后面会给出,该代码只是连接部分,我们会在下一次继续介绍,如果处理Socket的读写功能。尽管现在的代码还有诸多不完善的地方,我们会在以后的讲解中一步步填充完整。
#ifndef SOCKETCONNECTION_H#define SOCKETCONNECTION_H
// INCLUDES#include e32std.h#include e32base.h
#include es_sock.h//RSocketServ,RSocket#include in_sock.h//TInetAddr// CLASS DECLARATION
enum{??? ENotConnected, ELookingUp, EConnecting, EConnected};
class CSocketConnection : public CActive{??? public:
??????? ~CSocketConnection( );
??????? static CSocketConnection* NewL( );
??????? static CSocketConnection*
您可能关注的文档
最近下载
- 人力资源管理手册全套.doc VIP
- 隔热铝合金型材在弯曲变形情况下受力分析.pdf VIP
- 机械制图(第四版)-课件 3-2 正等轴测图的画法.pptx
- ERP系统在水电站物资集约化管理中的应用.pdf VIP
- 人工智能通识课读后感.pdf VIP
- DB50_T 1809-2025 软件供应链安全技术评价指南.docx VIP
- 成都理工大学2022-2023学年第1学期《高等数学(上)》期末考试试卷(A卷)附参考答案.pdf
- 防洪治理工程环评环境影响报告书.pdf
- T_CERS 0045-2024 信息技术应用创新Linux服务器操作系统测试技术要求.pdf VIP
- T_CAV 034-2025 T_CAS 1063-2025 疫苗临床试验电子数据采集系统数据医学监查技术规范.docx VIP
文档评论(0)