[发明专利]一种基于socket的网络通信方法、装置及系统有效
申请号: | 201110385444.8 | 申请日: | 2011-11-28 |
公开(公告)号: | CN103139157A | 公开(公告)日: | 2013-06-05 |
发明(设计)人: | 吴晶晶 | 申请(专利权)人: | 北京南车时代信息技术有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 逯长明 |
地址: | 100070 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 socket 网络 通信 方法 装置 系统 | ||
技术领域
本发明涉及网络通信技术领域,尤其涉及一种基于socket的网络通信方法、装置及系统。
背景技术
在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户/服务器模式(Client/Server model),即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。套接字,是支持TCP/IP的网络通信的基本操作单元,可以看作是不同主机之间的进程进行双向通信的端面点,简单的说就是通信的双方的一种约定,用套接字中的相关函数来完成通信过程。
在利用套接字通信时要先建立套接字的连接,根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听、客户端请求、连接确认。服务器监听是指服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,按时监控网络状态;客户端请求是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。连接确认是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
例如,应用程序a、b、c、d等分别为运行在同一网络上的不同结点的计算机中,若应用程序a希望发送数据到应用程序b中,而应用程序b希望自己的b-1线程接收并处理该数据,假设a为服务端,b为客户端,其实现方式如下:在a的某处建立服务端socket,在b的b-1线程处建立客户端socket并连接;a程序调用socket发送函数,发送数据至b程序的b-1线程中的socket;b-1线程调用socket接收函数读取数据,应用程序b对接收数据进行处理。
由上述应用程序a与b的通信过程可得知,运行在网络上的两个不同结点的多线程应用程序,若想建立稳定的socket连接并收发数据,且发送方希望接收方的指定线程接收数据,一般情况下,需要在发送方和接收方的指定线程编写socket通信代码。因此,在进行应用程序的设计时,应用程序的设计者需要关心socket程序设计的细节,包括调用socket函数来建立连接、读取、发送、查询网络消息以及维护socket通信网络等,整个网络通信过程较为复杂。
发明内容
有鉴于此,本发明提供了一种基于socket的网络通信方法、装置及系统,用于解决应用程序的设计者需要考虑socket程序设计细节、整个网络通信过程复杂的问题。
一种基于socket的网络通信方法,该方法包括:
A:初始化过程,包括:
A1:确定与服务端具有连接关系的客户端,分别创建与每一个客户端对应的socket类对象,并记录所述客户端与其对应的socket类对象的对应关系,所述socket类对象中包含了与其对应的客户端主机的主机名,将所述socket类对象指针存入预先建立的服务端socket链表;
A2:分别建立与所述服务端socket链表中每一个socket类对象对应的socket通信队列,并记录所述socket类对象与其对应的socket通信队列的对应关系;
B:通信过程,包括:
B1:服务端监听网络状态,当监听到客户端发送的连接请求,接收来自发送连接请求的客户端的连接;
B2:服务端指定待接收数据客户端的主机名、线程名和待发送的数据,服务端根据主机名确定带发送数据客户端对应的socket类对象,并确定与所述socket类对象对应的socket通信队列;
B3:将所述线程名和待发送数据写入与待接收数据的客户端对应的socket通信队列中;
B4:与所述socket类对象对应的socket执行程序提取所述socket通信队列中的线程名和待发送数据,并发送给待接收数据的客户端;
B5:所述待接收数据的客户端接收所述服务端发送的数据,从所述数据中解析出线程名,将所述数据中去除线程名后的数据存入预先建立的所述解析出的线程名所对应的线程队列中,客户端的指定线程从所述线程队列中提取数据。
所述服务端接收来自发送连接请求的客户端的连接具体为:
判断所述发送请求的客户端对应的socket类对象是否存在于所述服务端socket链表中时,如果是,则接收来自发送连接请求的客户端的连接;如果否,则创建socket类对象并进行绑定监听,然后接收来自发送连接请求的客户端的连接。
一种基于socket的网络通信方法,该方法包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京南车时代信息技术有限公司,未经北京南车时代信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110385444.8/2.html,转载请声明来源钻瓜专利网。