CN108551460B - 一种复杂网络环境下的socket通信建立方法 - Google Patents
一种复杂网络环境下的socket通信建立方法 Download PDFInfo
- Publication number
- CN108551460B CN108551460B CN201810808936.5A CN201810808936A CN108551460B CN 108551460 B CN108551460 B CN 108551460B CN 201810808936 A CN201810808936 A CN 201810808936A CN 108551460 B CN108551460 B CN 108551460B
- Authority
- CN
- China
- Prior art keywords
- communication
- port
- port group
- client
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种复杂网络环境下的SOCKET通信建立方法,可以用于复杂网络环境下SOCKET通信的建立过程。本发明描述了该方法的详细实现过程,包括通信端口组的选择、服务器端通信监听的设置方法、客户机端通信侦测的设置方法、侦测结果的判定方法等,并描述了相应方法的具体流程,从而支持上述方法。与现有的连接方式相比具有更加优越的特性,故能够有效的解决复杂网络中由于端口设置问题导致的与服务器无法通信的问题。本发明可广泛的用于服务器与计算机之间的软件通信,也可以被用于手机APP与服务器之间的软件通信中,也可以被广泛用于其他采用SOCKET通信的复杂网络环境下的软件通信过程中,具有广泛的应用价值。
Description
技术领域
本发明涉及一种复杂网络环境下的SOCKET通信建立方法,可以用于复杂网络环境下SOCKET通信的建立过程。
背景技术
SOCKET是应用层与TCP/IP协议族通信的中间软件抽象层,它具有一组接口,能够把复杂的TCP/IP协议族隐藏到SOCKET接口后面,使得用户能够简单的实现TCP/IP通信,具有接口简单、实现方便的特点。
端口是TCP/IP协议中的概念,描述的是TCP协议上的对应的应用,如FTP服务的端口号为21。
但是在实际的复杂网络通信中,特别是广域网通信中,由于不同运营商、防火墙等因素导致对不同端口的通信要求不同,因此可能会出现服务器设定的端口无法通信的情况。
发明内容
本发明的目的在于提供一种复杂网络环境下的SOCKET通信建立方法,它针对客户机/服务器架构下,广域网中由于多种原因,可能出现的客户机端无法访问服务器特定端口的情况进行了多端口通信检测设计,实现了客户机端可以动态选择服务器通信端口的功能,能够有效的解决复杂网络中由于端口设置问题导致的与服务器无法通信的问题。
本发明在现有技术的基础上,提出了:1、服务器采用端口组监听方式,来实现对多个通信端口的监听;2、客户机端采用端口组侦测方式,来寻找最佳通信端口;3、客户机端端口组侦测采用并行方式,来实现寻找最佳通信端口。4、在上述并行侦测的基础上,提出了一种基于端口组侦测结果的通信端口选择方法。
具体步骤如下:
(1)通信系统设计阶段:从TCP/IP协议规定的端口编号中选择可用的端口组成通信端口组。
(2)初始化阶段:服务器端采用端口组监听方式,服务器软件启动后,由SOCKET监听程序对设置的端口组进行监听,等待客户机端的端口访问;客户机端采用端口组侦测方式;
(3)客户机端端口组侦测采用并行侦测方式;
(4)基于侦测结果的工作端口选择。
所述步骤(1)中,客户机端采用与服务器端相同的端口组设置,即从可用的端口中选择合适的通信端口组成通信端口组。
所述步骤(2)中,客户机端软件程序中,启动多个子线程,对应于端口组中的各个端口号;子线程数与端口组中的端口数相同;每个子线程向服务器端设置的通信端口组中的一个发送空信息。
所述步骤(3)中,客户机端端口组侦测采用并行侦测方式的具体步骤如下:
(31)客户机端设置定时器组,组内每一个定时器对应一个子线程;
(32)客户机端启动子线程;
(33)客户机端子线程与服务器端对应端口进行通信连接;
(34)若通信连接建立,则客户机端子线程启动计时器,若通信连接不能建立,则报告异常,并将结果存入端口组网络侦测结果数组;
(35)在通信连接建立的情况下,客户机端子线程发送空信息;
(36)若收到服务器回复消息,则客户机端子线程结束计时器;若收不到回复消息,则报告异常,并将结果存入端口组网络侦测结果数组;
(37)等待所有子线程结束。
(38)客户机端并行侦测完成,开始进行侦测结果判断。
所述步骤(4)中,客户机端端口组并行侦测的结果判断的具体步骤如下:
(41)各子线程结束的结果为:通信正常或通信不正常;
(42)选择子线程中通信正常的端口组为正常端口组;
(43)比较正常端口组中各端口通信所用的通信时长;
(44)选择通信用时最短的一个端口作为后续正常通信的端口号;
(45)若端口组所有端口通信均不正常,即正常端口组为空,则报告通信异常,网络不通。
本发明采用SOCKET常规通信方式,具体步骤如下:
(1)SOCKET通信过程采用上述端口设置过程中设置的服务器工作端口为绑定的端口;
(2)采用SOCKET常规通信方式进行通信,即采用客户端发起通信,服务器端在工作端口响应的方式进行通信。
本发明基于现有SOCKET通信方法,可以用来实现在复杂网络环境下的通信建立,能够有效的规避端口封锁或者其他由于端口原因造成的软件网络通信异常。该方法具有实现简单、图示直观,应用方便,与具体物理实现方式无关,便于被大家接受的特点。在实际应用中,可以被用于服务器与计算机之间的软件通信,也可以被用于手机APP与服务器之间的软件通信中,也可以被广泛用于其他采用SOCKET通信的复杂网络环境下的软件通信过程中。
附图说明
图1是C/S架构的网络布局。
图2是服务器端和客户机端的通信端口组选择。
图3是服务器端的端口组监听开启流程图。
图4是服务器端的单个监听流程图。
图5是客户机端端口组并行侦测流程图。
图6是图5中各侦测子线程流程图。
图7是服务器端和客户机端的连接关系。
图8是图5中侦测结果判断的流程图。
具体实施方式
本发明的一个优选实例结合附图详述如下:
如图1所示为本发明所针对的C/S架构的网络分布情况,即服务器和客户机架构情况。
图2所示为步骤(1)中,服务器端和客户机端的通信端口组选择,在TCP/IP协议中总共有65536个端口,我们需要从中选择多个端口作为通信端口组,这些端口组将作为服务器端的监听端口组和客户机端的侦测端口组,如图2所示,选择了3个端口,即27001、27002、27003。这些端口在通信系统设计时选定。
图3所示为在图2所选通信端口组的基础上,在步骤(2)中,服务器端开启对这些端口的监听流程图,在函数起始后,逐一开启新线程,每个线程监听一个端口号,如图3中线程1监听端口27001,线程2监听端口27002,线程3监听端口27003。
图4所示为图3中各个线程的具体实现过程,使用socket()函数建立套接字,然后使用bind()函数绑定服务器端地址、监听端口等,接着采用listen()函数开启监听连接请求,线程会在accept()函数这里等待连接请求。
图5所示为在图2所选通信端口组的基础上,按照步骤(3),客户机端开启对这些端口的侦测流程图,在函数起始后,逐一开启新线程,每个线程负责连接一个端口号,如图5中线程1侦测服务器端口27001,线程2侦测服务器端口27002,线程3侦测服务器端口27003。然后主程序等待这些线程结束,开始对侦测结果进行判断,找到通信最快的端口,设置该端口为工作端口,至此连接建立完成。
图6所示为图5中各个线程的具体实现过程,首先使用函数bind()绑定侦测的网络地址和端口号,然后使用connect()函数对服务器端口进行连接,假如连接成功,则发送接收空数据进行连接测试。假如连接异常,则退出,并标记异常。
图7所示为服务器端与客户端之间进行发送、接收测试的关系图,图中省略的部分在图4和图5中已经描述。客户机端通过connect()函数发出连接,服务器端则在accept()函数处获取到连接信息。之后则进行收发测试,即客户机端发送数据,服务器端则接收数据,并发送回复信息。
图8所示为图5中侦测结果判断的流程,即步骤(4)。在侦测完成后,通过ReadNetTestResult()函数读取端口组网络侦测结果数组,每次读取一个端口的通信结果和相应的通信时长,假如结果是通信不成功,则抛弃该端口;假如结果是通信成功,则判断时长是否是最短的,假如是最短的,则将工作端口设置为该端口,假如所有结果都为不成功,则报告网络中断。如在本例中,线程1侦测服务器端口27001的结果为无法通信;线程2侦测服务器端口27002的结果为可以通信,通信耗时10ms;线程3侦测服务器端口27003的结果为可以通信,通信耗时20ms,则服务器端口27001由于无法通信,按照侦测结果判断流程,被抛弃;服务器端口27002和服务器端口27003都可以通信,但服务器端口27002的通信耗时较短,相应通信速度较快,因此选择27002端口作为工作端口。即在后面的通信过程中,connect()函数变量中的端口参数设置为27002。
工作端口设置完成后,开始进入正常通信阶段,即socket常规通信方式,每次由客户机端通过connect()函数连接服务器工作端口发起通信,服务器响应的方式进行通信。
Claims (3)
1.一种复杂网络环境下的SOCKET通信建立方法,采用SOCKET常规通信方式,其特征在于:
(1)通信系统设计阶段:从TCP/IP协议规定的端口编号中选择可用的端口组成通信端口组;
(2)初始化阶段:服务器端采用端口组监听方式,服务器软件启动后,由SOCKET监听程序对设置的端口组进行监听,等待客户机端的端口访问;客户机端采用端口组侦测方式;
(3)客户机端端口组侦测采用并行侦测方式;
(4)基于侦测结果的工作端口选择,结果判断的具体步骤如下:
(41)各子线程结束的结果为:通信正常或通信不正常;
(42)选择子线程中通信正常的端口组为正常端口组;
(43)比较正常端口组中各端口通信所用的通信时长;
(44)选择通信用时最短的一个端口作为后续正常通信的端口号;
(45)若端口组所有端口通信均不正常,即正常端口组为空,则报告通信异常,网络不通。
2.根据权利要求1所述的复杂网络环境下的SOCKET通信建立方法,其特征在于,所述步骤(2)中,客户机端采用与服务器端相同的端口组设置,客户机端软件程序中,启动多个子线程,对应于端口组中的各个端口号;子线程数与端口组中的端口数相同;每个子线程向服务器端设置的通信端口组中的一个发送空信息。
3.根据权利要求2所述的复杂网络环境下的SOCKET通信建立方法,其特征在于,所述步骤(3)中,客户机端端口组侦测采用并行侦测方式的具体步骤如下:
(31)客户机端设置定时器组,组内每一个定时器对应一个子线程;
(32)客户机端启动子线程;
(33)客户机端子线程与服务器端对应端口进行通信连接;
(34)若通信连接建立,则客户机端子线程启动计时器,若通信连接不能建立,则报告异常,并将结果存入端口组网络侦测结果数组;
(35)在通信连接建立的情况下,客户机端子线程发送空信息;
(36)若收到服务器回复消息,则客户机端子线程结束计时器;若收不到回复消息,则报告异常,并将结果存入端口组网络侦测结果数组;
(37)等待所有子线程结束;
(38)客户机端并行侦测完成,开始进行侦测结果判断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810808936.5A CN108551460B (zh) | 2018-07-20 | 2018-07-20 | 一种复杂网络环境下的socket通信建立方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810808936.5A CN108551460B (zh) | 2018-07-20 | 2018-07-20 | 一种复杂网络环境下的socket通信建立方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108551460A CN108551460A (zh) | 2018-09-18 |
CN108551460B true CN108551460B (zh) | 2020-11-24 |
Family
ID=63492249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810808936.5A Active CN108551460B (zh) | 2018-07-20 | 2018-07-20 | 一种复杂网络环境下的socket通信建立方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108551460B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110177026B (zh) * | 2019-05-17 | 2022-08-02 | 深圳创维-Rgb电子有限公司 | 一种网口端子的检测方法、存储介质及服务器 |
CN111683094B (zh) * | 2020-06-09 | 2022-06-17 | 中国银行股份有限公司 | Tcp通讯时客户端选择端口的方法、装置、计算机设备和存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101353933B1 (ko) * | 2007-07-04 | 2014-01-22 | 삼성전자주식회사 | 멀티 포트를 구비하는 화상형성장치, 및 통신 포트를제공하는 호스트 그리고, 그들의 통신포트 제공방법 |
CN103475540A (zh) * | 2013-09-04 | 2013-12-25 | 厦门亿联网络技术股份有限公司 | 同一局域网内pc机间检测ip端口是否连接的方法 |
CN103701869B (zh) * | 2013-12-10 | 2018-01-19 | 深圳市航天泰瑞捷电子有限公司 | 一种控制多端口电表通讯的方法 |
CN106997307A (zh) * | 2017-02-13 | 2017-08-01 | 上海大学 | 一种面向多终端无线通信的Socket线程池设计方法 |
-
2018
- 2018-07-20 CN CN201810808936.5A patent/CN108551460B/zh active Active
Non-Patent Citations (2)
Title |
---|
"Managing BGA test socket SI characterization";C. Lin, H. Ng and W. Wong;《2013 IEEE 15th Electronics Packaging Technology Conference (EPTC 2013), Singapore, 2013》;20131231;589-591页 * |
"群组技术在服务器和网络中的应用";樊强,刘晓宏;《电力系统通信》;20041231(第4期);57-60页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108551460A (zh) | 2018-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10148650B2 (en) | Method, device and system for user authentication | |
JP5952808B2 (ja) | 被試験デバイスと試験を制御する試験装置との同期を確立するために複数のネットワークアドレスを使用するためのシステム及び方法 | |
US10772140B2 (en) | Communications device connection method, terminal device, and server system | |
US20130003750A1 (en) | Analyzing a network with a cache advance proxy | |
CN108551460B (zh) | 一种复杂网络环境下的socket通信建立方法 | |
CN102045750A (zh) | Wlan性能监测和故障处理方法及系统 | |
CN109714190A (zh) | 一种基于应用级别的负载均衡与故障转移系统及其方法 | |
CN104660639B (zh) | 云终端升级处理方法及装置 | |
CN105337814A (zh) | 一种网络设备的连接方法、设备及系统 | |
CN107332741B (zh) | 一种网络检测方法、网络检测装置及智能终端 | |
CN104426881A (zh) | 一种检测恶意行为的方法及装置 | |
CN112152828A (zh) | 一种游戏加速方法、装置、vpn终端及存储介质 | |
CN106254384B (zh) | 一种服务访问方法及装置 | |
CN113038499B (zh) | 终端Wi-Fi兼容性测试方法、装置、系统、设备及介质 | |
CN105681122A (zh) | 用于电信设备监视的方法和系统 | |
CN108696859B (zh) | 一种双卡移动终端访问互联网的方法和双卡移动终端 | |
WO2017050109A1 (zh) | 一种p2p连接nat穿越的路径建立方法、装置及系统 | |
CN107656887A (zh) | 外设总线的控制装置及方法 | |
CN107743079B (zh) | 线路探测方法、设备及计算机可读存储介质 | |
US20150222591A1 (en) | Method, Device, and System for Acquiring Internet Protocol Address | |
CN103152801B (zh) | 与无线接入装置建立连接的方法和装置 | |
CN112822088B (zh) | 网络连接方法和装置、电子设备、处理器及存储介质 | |
CN112788658B (zh) | 一种通信设备的共享数据方法、通信设备及存储介质 | |
CN107204895A (zh) | 一种dut端口冲突处理能力的测试方法及系统 | |
CN112468363A (zh) | 一种链路连通性检测的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |