Socket模拟Http连接之初识Socket.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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*

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档