999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

客戶端自動查找并連接服務器端的實現*

2010-04-26 05:08:36韓順鋒丁忠義
艦船電子工程 2010年12期

段 哲 韓順鋒 黃 巍 丁忠義

(中國船舶重工集團公司第七二二研究所 武漢 430079)

1 引言

一般來說,對于 Winsock連接,無論是使用TCP協議還是UDP協議,客戶端程序連接服務端程序時無一例外的要指定IP地址(或機器名)和端口號,那么,在端口已知而服務端程序所在機器地址或名稱未知的情況下,怎樣實現客戶端程序發起并建立連接呢?這就是本文需要解決的問題。

2 TCP與UDP介紹

2.1 TCP協議基礎

TCP(T ransfer Control Protocol)協議是一種面向連接的,可靠的傳輸層協議,可以將它同電話系統相比。面向連接是指一次正常的TCP傳輸需要通過在TCP客戶端和TCP服務端建立特定的虛電路連接來完成,該過程通常被稱為“三次握手”。在開始數據傳輸之前,用戶必須先建立連接。

如果應用程序要使用TCP協議,那么首先必須決定應用程序是服務器還是客戶端。如果要創建一個服務器端,那么應用程序需要“監聽”指定的端口。當客戶端提出連接請求時,服務器端能夠接受請求并建立連接。在連接建立之后,客戶端與服務器端可以自由地互相通訊。

2.2 UDP協議基礎

UDP(User Datagram Protocol)協議是一種無連接協議,與TCP操作不同,兩臺計算機之間的傳輸類似于傳遞郵件:消息從一臺計算機發送到另一臺計算機,不與對方建立連接,而是直接就把數據包發送過去。

另外,單次傳輸的最大數據量取決于具體的網絡。同時,一個UDP應用可同時作為應用的客戶或服務器方。

由于UDP協議并不需要建立一個明確的連接,因此建立UDP應用要比建立TCP應用簡單得多。

2.3 TCP協議和UDP協議的差別

TCP協議和UDP協議各有所長、各有所短,適用于不同要求的通信環境。TCP協議和 UDP協議之間的差別如表1所示。

3 解決方案

本文提出了一種解決引言部分提出的問題的方案,該方案巧妙地將TCP與UDP結合起來,利用其各自的優點,解決客戶端自動查找并連接服務器端的問題,簡單概括起來就是:客戶端首先使用UDP協議自動查找服務器,然后用TCP協議和服務器建立連接。

當客戶端程序啟動以后,采用UDP協議發送廣播消息,廣播IP地址為255.255.255.255,端口1000,那么網絡內所有機器的端口1000都能接收到該廣播消息。廣播消息的格式如表2所示。

表2 客戶端廣播消息格式(頭+ClientIP)

客戶端發送廣播消息的同時,利用UDP協議監聽1001端口。

在服務器端程序中,則要從廣播消息里獲得客戶端的IP地址,然后將本機IP改為和接收到的IP同一網段的不同IP,接著啟動TCP服務器,再采用UDP協議將自己的IP地址發送到客戶端,讓客戶端與自己建立連接。

服務器端首先采用 UDP協議,監聽端口1000,接受到廣播消息以后,就按表2定義的格式進行解析。如果接收到的包長為 30,就判斷前20Byte是否為“Apply for Connection”,如果匹配成功,則取得包內后續的IP地址。將服務器地址更改為和客戶端同網段的不同的IP。例如接收到的包是“Apply for Connection192.168.0.88” ,那么服務器IP改為“192.168.0.223”。服務器IP更改以后,啟動TCP服務器,將TCP協議端口綁定為1002。然后采用 UDP協議向客戶端發送服務器的IP(格式如表3),UDP協議的連接IP地址為接收到的IP,連接端口為1001。

表3 服務器響應廣播消息格式(頭+ServerIP)

客戶端發送廣播消息以后,在1001端口接收到服務器端傳回的 IP以后,就和服務器端建立TCP連接,端口為1002。

服務器與客戶端主要連接流程圖如圖1所示。

圖1 客戶端自動查找服務器并和服務器建立連接

4 例程

考慮到編程的效率,本文采用VB 6.0實現了上面的方案。利用WinSock控件可以與遠程計算機建立連接,Winsock包含有UDP協議和TCP協議,可用這兩種協議來建立客戶與服務器應用程序來進行數據交換,而且不必了解TCP/IP協議的細節,只需要弄明白其屬性設置和方法的應用即可。

4.1 服務器端

在窗口中添加三個Winsock控件,第一個命名為sockgetdata,采用 UDP協議,將端口綁定為1000,用于接收廣播消息;第二個命名為sockudpsend,采用 UDP 協議,RemotePort為 1001,向客戶端發送服務器地址;第三個命名為sockTcpS-erver,采用 TCP協議,LocalPort為1002,用于和客戶端建立連接。

4.2 客戶端

可在窗口中添加三個Winsock控件,第一個命名為 sockLink,采用 UDP協議,RemotePort為1000,發送廣播消息;第二個命名為 sockGetRemotIP,采用 UDP協議,將端口綁定為1001,接受服務器地址;第三個命名為sockTcpClient,采用TCP協議,LocalPort為1002,用于和服務器端建立連接。具體程序如下:

5 結語

本文將TCP與UDP協議聯合起來,提供了一種在端口已知而服務端程序所在機器地址或名稱未知的情況下,怎樣實現客戶端程序發起并建立連接的解決方案。此方法不僅提供了連接的方便實用性,而且保證了數據通信系統的高可靠性。

[1]Anthony Jones and Jim Ohlund.Microsoft Windows網路程式設計[M].2005,6

[2]Microsoft Corporation.Visual Basic 6.0中文版程序員指南[M].北京:北京希望電腦公司,1998

[3]W.RICHARD STEVENS BILL FENNER.UNIX網絡編程[M].楊繼張,譯

[4][美]W.Richard Stevens Stephen A.Rago.UNIX環境高級編程[M].第二版.尤晉元,張亞英,戚正偉,譯

[5][美]K.Wall,M >Watson,M.Whitis,et al.GNU/Linux編程指南[M].王勇,王一川,林花軍,等譯.北京:清華大學出版社,2000,7

[6]高傳善,錢松榮,毛迪林.數據通信與計算機網絡[M].北京:高等教育出版社,2000,7

主站蜘蛛池模板: 国产精品欧美激情| 2021精品国产自在现线看| 亚洲美女一级毛片| 亚洲成aⅴ人片在线影院八| 国产精品久久久久婷婷五月| 国产美女精品人人做人人爽| 自拍中文字幕| 国产一级毛片网站| 欧美一级在线| 久久久久亚洲精品成人网| 久久黄色视频影| 秋霞午夜国产精品成人片| 无码啪啪精品天堂浪潮av| 试看120秒男女啪啪免费| 又黄又湿又爽的视频| 国产成a人片在线播放| 爽爽影院十八禁在线观看| 91探花国产综合在线精品| 香蕉综合在线视频91| 国模粉嫩小泬视频在线观看| 国产人妖视频一区在线观看| 日本久久久久久免费网络| 国产成人精品18| 国产一级毛片高清完整视频版| 2021国产在线视频| 亚洲人成日本在线观看| 国产99免费视频| 欧美一级黄色影院| 亚洲一区第一页| 极品国产一区二区三区| 国产区人妖精品人妖精品视频| 精品亚洲麻豆1区2区3区| 色视频久久| 久久精品国产91久久综合麻豆自制| 亚洲国产精品国自产拍A| 91成人精品视频| 97在线公开视频| 看你懂的巨臀中文字幕一区二区| 特级毛片8级毛片免费观看| 极品av一区二区| 狠狠色噜噜狠狠狠狠奇米777| 国产精品视频999| 精品国产一二三区| 国产av剧情无码精品色午夜| 国产免费怡红院视频| 国产在线小视频| 国产网站免费| 黄色网在线| 国产精品亚洲综合久久小说| 国产成人喷潮在线观看| 天天色综网| 中文字幕中文字字幕码一二区| 五月婷婷亚洲综合| 久久婷婷六月| 亚洲成人网在线播放| 国产91小视频| 人妻免费无码不卡视频| 国产精品网曝门免费视频| 四虎永久免费地址在线网站| 国产亚洲第一页| 色香蕉影院| 免费一看一级毛片| 污污网站在线观看| 国产69精品久久久久孕妇大杂乱 | 91精品在线视频观看| 日韩精品资源| 免费人成黄页在线观看国产| 97精品久久久大香线焦| 亚洲an第二区国产精品| 免费人成又黄又爽的视频网站| 韩国福利一区| 国产精品久久久久久久伊一| 91视频青青草| 少妇精品在线| 狠狠色成人综合首页| 久久久久久午夜精品| 国产高颜值露脸在线观看| 成人小视频网| 人妻精品久久无码区| 国产成人高清精品免费软件| 久久99热这里只有精品免费看| 亚洲欧美日韩中文字幕一区二区三区|