多伺服器怎麼通訊
A. 集群伺服器如何通信
一、 集群通信系統的概念
集群(英文名為:Trunking),是一種多用戶共用一組通信信道而不互相影響的技術。集群這一技術概念其實已在雙向的無線通信領域中被廣泛應用。
集群通信系統能使大量的用戶共享相對有線的頻率資源,即系統的所有可用信道可為系統內所有用戶共用,具有自動識別用戶,自動並動態地分配無線信道的功能,是一種多用途,高效率的移動調度通信系統
二、 集群通信系統的特點
1、 集群使用的頻率
集群的工作頻段為800兆頻段,具體的:
· 上行頻段為:806~821(MHz);下行頻段為:851~866(MHz);
· 鄰道之間的頻率間隔為:25KHz;
· 集群系統中,通信的雙方(基站和用戶終端)採用兩個頻率為一組,實現雙向通信;
· 一組頻點的上下行頻率間隔為:45MHz;
2、 集群通信的工作方式
集群系統中基站採用雙頻全雙工的工作方式,用戶終端則根據不同的工作模式採用不同的工作方式:
調度模式下,採用雙頻半雙工方式;
電話模式下,若用戶終端為全雙工類型的終端可採用雙頻全雙工方式;若為單工用戶機,則只能採用雙頻半雙工方式;
雙頻全雙工的定義:通信雙方採用兩個頻率為一組,通信的任何一方在發射的同時也能接收,操作方便,無需進行按鍵通信。
雙頻半雙工的定義:通信的雙方採用兩個頻率為一組,通信的一方(基站)為全雙工方式工作;另一方為單工方式,即在發射的同時無法接收,在接收的同時也無法發射,只能採用按鍵發話,松鍵收聽的方式。
3、 集群系統的組網方式
模擬集群系統一般採用小容量大區制的覆蓋(又稱為單站結構),模擬聯網的集群系統和數字集群系統一般採用大容量小區制的覆蓋(又成為蜂窩網結構);
所謂大區制是指用一個基站覆蓋整個業務區,業務區半徑一般為30km左右,以可大至60km。大區制一般可容納幾千至上萬用戶。
所謂小區制是將整個服務區話分為若干無線小區(有稱基站區),每個小區服務半徑為2~10km。採用該組網方式的系統中頻率可以重復利用,而且根據小區分割模式不同可採用不同的頻率復用方式。
4、 集群系統的基本功能
集群系統所共有的基本功能如下:
1、具有強勁的調度通信功能;
2、兼備有與公共電話網和公共移動通信網互聯的電話通信功能;
3、智能化的用戶移動行管理功能;
5、 智能化的無線信道分配管理、系統控制和交換功能;
三、 集群通信系統分類
1、按控制方式分
有集中控制和分布控制。集中控制是指一個系統中有一個獨立的智能控制器統一控制、管理資源和擁護。分布式控制方式是指每個信道都有一個單獨的控制起,這些控制器分別獨立的控制、管理相應的系統資源和一部分用戶。
2、按信令方式分
有共路信令和隨路信令方式。共路信令是指基站或小區內設定了一個專門的信道作為控制信道,用以接收用戶機發出的通信、入網等請求信號,同時傳輸系統的控制信令,向用戶下達信道分配信息和用戶通知信息。
3、按通話佔用信道分
有信息集群、傳輸集群和准傳輸集群。信息集群是指用戶完成一次通信後,該信道仍為該用戶保留一段時間(一般為10秒左右),以確保該用戶在這段時間內再次呼叫時仍能成功佔用信道,如此來保證信息的完整性;傳輸集群是指當用戶完成一次通信後,新道立即釋放,以提供系統再次分配,如此來提高系統資源的利用率;准傳輸集群是介於以上兩種之間的一種集群方式,即信道保留的時間略短於信息集群(一般為3秒左右)。
4、按信令占信道方式分
有固定式和搜索式。固定實是指信令信道(控制信道)是系統中固定的一個信道,用戶在入網或業務請求式固定向該信道發起請求;搜索式是指信令信道不固定,由系統隨機指定,用戶每次入網或業務請求均必須搜索信令信道。
模擬集群
一、設備及組織結構
本公司三個集群基站均採用美國MOTOROLA公司生產的集群移動通信系統SMARTNETII,系統組成如圖所示,主要由中央控制器、電話互聯終端、集群信道機、收發天線共用器、天線、系統管理終端、系統監視終端、移動台和手機等設備組成。如圖3-1
中央控制器:
負責控制和管理整個系統的運行,包括:選擇和分配可用信道;監視話音信道活動;監測和報告告警情況;為系統管理提供介面等。
電話互聯終端(CIT):
是集群通信網與有線電話網的介面,供調度台和移動台自動接入有線電話網之用。
集群信道機:
分為控制信道和話音信道,提供中央控制器與用戶設備間的介面。每個信道機要求一部發射機和一部收發信機全雙工工作。
系統管理終端:
提供系統操作員輸入或修改系統運行參數、設備狀態及告警報告、調整系統定時及系統接續參數、報告信道工作狀態及控制用戶接入系統等。
天饋系統:
天饋系統包括從天線到傳輸線接頭為止的所有匹配、平衡、移相或其他耦合裝置,包括天線、發射機合路器、接收機多路耦合器、傳輸線、雷電保護和避雷器及塔頂放大器等。
模擬集群系統組織結構圖
二、功能簡介
1、 用戶終端實現的功能:
組呼:通話小組是集群系統中最基本的通信組織。通過用戶機編碼可以將多個用戶機編在一個通話小組中,用戶機按鍵進行組呼,只有同一組碼的用戶機才能與本小組內的成員進行通信。
私線呼叫(單呼):一個用戶機能有選擇性地指定用戶與其建立單獨通話。
呼叫提示:由一方用戶機發起的對另一方用戶機的尋呼,被叫的一方機器會間隔幾秒鍾發出"嘟嘟"的響聲,直到被叫用戶響應,同時被叫方的機器將會顯示主叫方的用戶ID;被叫用戶此時若直接按鍵,會向主叫方發起一次私線呼叫。
電話互連:集群用戶可以通過系統撥打有線電話(市話、長話),市話用戶也可通過二次撥號與集群用戶建立電話通信。
緊急呼叫:由用戶按緊急呼叫鍵發起,緊急呼叫具有最高等級,當信道遇忙時,通常有兩種方式:隊首式和強拆式。
2、 系統管理實現的功能:
系統對用戶機ID碼的識別和管理
用戶每一次申請,系統都必須對其ID碼進行認別,以辨別其合法性及小組歸屬。
用戶機功能的遙閉、授權、開啟
系統可以根據需要對分散在各處的用戶機進行空中關閉---遙閉或開啟。系統也可以對用戶機優先等級、電話功能等進行遠程授權或取消。
遇忙排隊
當用戶發起呼叫申請時,系統內無空閑信道,則系統記錄下用戶機的ID碼並進行排隊,按一定的程序進行處理。
動態的信道分配
由系統中央控制器根據系統當前的狀態按一定的順序進行向用戶提供動態的信道分配。
故障弱化模式
當中央控制器或所有的控制信道故障時,系統會工作在故障弱化模式下,這時所有用戶機以常規模式工作,佔用用戶機編程時設定的故障弱化信道進行通信。
系統的故障診斷和處理、狀態監視、系統參數的調整
· 系統能對於當前發生在信道機或控制器部件上的故障作出響應和處理,將故障的部件自動暫閉,以使系統不再將用戶的通信分配上去。
· 系統對當前的運行狀態進行不斷的監視,如哪些/哪個信道機被佔用,哪些空閑,哪些故障等,以便在信道分配時作出准確的處理。
· 系統內有大量的參數,可以通過系統管理終端進行及時的遠程調整。
數字集群
IDEN(Integrated Digital Enhanced Networks)是美國MOTOROLA公司生產的800M數字集群移動通信系統,這個系統是利用了多項先進的數字話技術,能在一部iDEN用戶機上集成了調度、電話、簡訊、數傳四項功能。其先進的無線射頻技術使得一個25kHz的載頻上容納6路話音,從而使得有限的頻點得到了更大程度的利用。iDEN數字集群通信網具有大容量、大覆蓋區、高保密和高通話清晰度的特點。
1、 組織結構及設備
iDEN的基本組織結構包含:調度子系統、互聯子系統、操作維護子系統、計費及用戶數據管理子系統和基站子系統;
運行管理中心(MSO):是上層網路控制和交換設備所在的機房,負責執行系統的日常管理,為長期的網路工程系統監控和規劃工具提供資料庫資料。在MSO中包含的子系統為:調度子系統、互聯子系統、OMC子系統、計費及用戶數據管理子系統;
操作維護中心(OMC):承擔對全網設備的管理,對運行參數進行設置和修改,收集運行數據,監控系統運行情況。
計費及用戶數據管理子系統(ADC):實現對用戶進行的開、關、授權、採集計費數據等功能。
基站子系統: 包含了分布在全市各個方向上的基站(EBTS-增強型基站傳輸系統)。各個基站通過E1數字中繼線路與MSO設備聯接。在本公司的iDEN基站系統中目前分布在外環線以內的基站均為3扇區的基站,分布在外環線以外的基站為全向基站。
調度子系統包含以下設備:
調度應用處理器(DAP):為調度通信提供了總體的協調、控制和實時的調度呼叫處理,實現了調度通信時所需的資源管理、用戶訪問控制、位置跟蹤和調度子系統內所有設備的網路管理,同時也為OMC子系統提供介面;DAP包含了D-HLR、D-VLR、i-HLR
· D-HLR:調度歸屬位置寄存器,是一個駐留在硬碟上的用戶資料庫。用以記錄用戶與調度通信相關的身份碼、許可權、通話組號、開設的調度業務類別等;
· D-VLR:調度訪問位置寄存器,是一個駐留在內存上的用戶資料庫,用以記錄在系統中當前一開機的調度用戶狀態、位置以及相關許可權等;
· i-HLR:分組業務歸屬位置寄存器,是一個與分組數傳業務相關的用戶資料庫,用以記錄為用戶的分組數傳業務分配的IP地址;
快速分組交換機(MPS):在DAP的控制下將來自基站的話音分組進行復制,根據DAP的指令在各個基站之間實現話音分組的交換。
移動數據網關(MDG):是一個企業基叫環路由器,通過該介面網關可以建立起與其他intranet或internet的互聯路由
互聯子系統包括以下設備:
移動交換中心(MSC):為iDEN用戶的電話通信提供了控制管理和實時的呼叫處理和話音交換功能。另一方面,又為MSC與公共電話網(PSTN)之間的互聯提供了介面。MSC包含了T-HLR和T-VLR
· T-HLR:電話歸屬位置寄存器,是一個集成在MSC交換機核心內的用戶資料庫。記錄了所有用戶與電話通信相關的身份碼、業務類型和狀態等。
· T-VLR:電話訪問位置寄存器,是一個駐留在交換機核心內存上的用戶資料庫。記錄了當前開機用戶的位置、狀態等。
短消息業務服務中心:(SMS-SC)為用戶的短消息提供接收、存儲和轉發功能。
基站控制器(BSC): 是基站與MSC之間的介面,又稱為A介面。它一方面實現了將電話通信的話音從EBTS接續至MSC進行交換;另一方面也將公共有線電話網內的交換信令轉換為行動電話應用信令,為移動用戶與PSTN之間的通信建立信令握手。BSC包括BSC-CP,和BSC-XCDR
· BSC-CP(基站控制器-處理器):承擔呼叫處理,包括信令轉換、話音接續等。
· BSC-XCDR(基站控制器-話音變碼器): 提供PSTN網內使用的PCM話音編碼和iDEN EBTS系統內使用的VSELP話音編碼之間的轉換
iDEN基本網路結構
二、關鍵技術
· 時分多址TDMA技術:是把時間分割成周期性的幀,每一幀在分割成若干個時隙。然後根據一定的時間分配原則,使各個移動台在每幀內只能按指定的時隙向基站發送信號,在滿足定時和同步的條件下,基站可以分別在各時隙中接受各移動台的信號而不混擾。同時基站發向多個移動台的信號都按順序安排在預定的時隙中傳輸,各移動台只要在指定的時隙內接收,就能在合路的時隙中把發給它的信號區分出來。
iDEN系統把每個25kHz信道分割為6個時隙,每個時隙佔15ms。
· VESLP語音編碼技術(矢量和激勵線性預測編碼技術):將90ms的模擬話音壓縮為15ms的數字信號。以適應其在一個15ms的時隙信道內傳送。
· M-16QAM調制技術(多路復用-16點陣正交振幅調制技術):這是一種專為集群系統設計的調制技術這種調制方式具有線形頻譜,克服時間擴散產生的影響。
三、 承載業務
1、新增的用戶機功能
新增的調度功能:
· 組呼
--本地呼叫(支持用戶在其歸屬的Service Area的小區內進行呼叫)
--選區呼叫(支持用戶選擇某一Service Area進行呼叫)
--廣域呼叫(支持用戶在iDEN區域網路的任何位置進行呼叫)
· 單呼
--私線呼叫
--呼叫提示
· 緊急呼叫-在按下緊急呼叫按鈕後,允許該用戶強拆本組用戶在用的通信,使本組內所有成員均收聽到其話音;
· 單站操作模式(ISO)---- ISO功能支持當一個基站失去與MSO的鏈接後,仍能保持在該機站范圍內的受限的調度功能
· 移動用戶狀態消息----允許有增強功能的MS單機向iDEN增強型調度台或其他有此功能的MS發送預定義的狀態簡訊;
· 多組通信(MSTG)---- MSTG支持調度模式下可訪問一個主要的通話組和3個輔助的通話組;
增強的電話功能:
· 蜂窩小區和雙工漫遊
· 呼叫等待、三方會談、呼叫轉移
· 自動漫遊和越區切換
短消息收發功能-在用戶機不具備接收簡訊的條件下(如:關機、不在服務區或手機存儲器已滿等),信息存儲在簡訊中心內,在用戶可以接受時(如開機並在服務區內等),信息發送給用戶;
分組數傳功能-在16QAM調制技術下,一個載頻的傳輸速率為22Kbit/s;
2、新增的系統管理功能
(1) 配置管理,如:改變顯示基站設備及系統網路管理設備的配置、改變和顯示控制用戶機的資料庫、報告所有資料庫的最新數據、確定用戶機的使用功能等
(2) 計費管理:記錄用戶機在空中的使用時間和時長,輸出記錄的數據到計算機
(3) 錯誤診斷管理:顯示各類設備的故障報告、告警報告、輸出各設備的狀態變化信息、進行環路反饋的測試等。
(4) 安全保密管理:控制有關人員對系統資源的訪問、提供用戶機的無線遙斃、開啟功能等。
(5) 運行管理:對運行著的設備進行有針對性的監控、收集和處理各類運行數據。
四、用戶機編碼結構
· IMEI(international Mobile Equipment Identifier)-國際移動終端設備身份碼,這是一台用戶終端再生產過程中有生產廠家根據國際標准給移動台設立的,在國際范圍內唯一的機器編號。該編碼長15個位元組,編寫在移動台硬體晶元(如SIM卡)中。
· IMSI(International Mobile Station Identifier)- 國際移動台身份碼,這是由服務提供商為移動台設立的,在國際范圍內唯一的身份碼。改編碼長15個位元組,系統首先在上層網路設備中進行分配,在資料庫中建立並存儲起IMEI於IMSI的唯一對應關系,移動台在首次開機注冊時在通過了系統鑒定後,由控制信道上讀取並自動存儲在移動台內存中。
· TMSI(Temporary Mobile Station Identifier)-臨時的移動台身份碼,這是由系統在移動台每次的開機或更新位置區域時分配的編碼,在VLR范圍內唯一。該編碼是為了防止用戶身份的盜用,同時節省呼叫建立的時間。
· MSISDN(Mobile Station ISDN)-移動台ISDN號碼,是一個電話號碼,它唯一地標識了移動它在iDEN網和PSTN網內的身份,iDEN用戶在電話通信時使用該號碼。該號碼長度部超過15個位元組。
· FLEET & MEM-調度大組號及成員號,大組號在整個iDEN系統內唯一的標識了一個單位或團體;成員號則在該大組范圍內唯一的標識了一個調度用戶單機。
· Talkgroup-通話組號,在FLEET范圍內唯一,它將FLEET范圍內的成員組織為一個一個獨立調度的小組。
五、 用戶機與系統之間的部分叫呼過程
1、關於用戶機的身份碼分配過程
? 首先由管理員登錄到系統管理終端連接到系統的HLR(歸屬位置登記器),將記錄在用戶機CPU內存中的串號(IMEI-國際移動設備標識符)登記到HLR中,為其分配一個在系統中有效的且唯一的IMSI(國際移動用戶標識),以及一系列的其他參數,包括編組情況。所有這些參數必須確保在HLR內正確地成功注冊。
在HLR中IMEI和IMSI必須都保持唯一,即一個IMEI對應一個IMSI,一個IMSI也只能分配給一個用戶機。
2、 用戶機在系統中的登記過程
用戶機的每次開機時與系統之間相互傳遞數據的過程為登記過程。
用戶機在注冊後的首次登記時將IMEI通過基站傳送至系統中心設備,系統收到後與用戶機之間執行鑒證過程。當鑒證通過後,將IMSI、Indivial ID(一個半固定的身份碼)等通過基站發送給用戶機。
用戶機以後每次的開機時所觸發的登記過程向系統發送IMSI,在鑒證通過後收到Indivial ID等。
用戶機在成功地開機登記後到關機之前,每次位置更新和業務通信申請時,均向系統傳遞Indivial ID。
用戶機的鑒證過程:
系統HLR產生一個隨機數,傳送到系統的CPU上執行一次運算(特定的運算程序)得到與此隨機數相應的結果值,保存在VLR(訪問位置寄存器)中。隨機數通過基站發送給用戶機。
用戶機收到隨機數後由用戶機的CPU進行相關的運算,並將其得到的結果數通過基站傳送給VLR,VLR將此結果數與系統運算的結果數比較,兩數相等,則鑒證正確,通過;反之則鑒證失敗,系統拒絕該用戶機入網。
B. 網頁即時通訊兩台伺服器怎麼互通
如意通RTP,可以和MSN。GTALK,FACEBOOK。等大量即時通訊軟體互通。一般互通的方案就是伺服器對伺服器間通過網關互通,如意通RTP是基於XMPP協議的,所以和很多XMPP協議的軟體都是直接互通,不是通過走代理。
C. web 伺服器怎麼與tcp伺服器通訊
一,網路編程中兩個主要的問題
一個是如何准確的定位網路上一台或多台主機,另一個就是找到主機後如何可靠高效的進行數據傳輸。
在TCP/IP協議中IP層主要負責網路主機的定位,數據傳輸的路由,由IP地址可以唯一地確定Internet上的一台主機。
而TCP層則提供面向應用的可靠(tcp)的或非可靠(UDP)的數據傳輸機制,這是網路編程的主要對象,一般不需要關心IP層是如何處理數據的。
目前較為流行的網路編程模型是客戶機/伺服器(C/S)結構。即通信雙方一方作為伺服器等待客戶提出請求並予以響應。客戶則在需要服務時向伺服器提 出申請。伺服器一般作為守護進程始終運行,監聽網路埠,一旦有客戶請求,就會啟動一個服務進程來響應該客戶,同時自己繼續監聽服務埠,使後來的客戶也 能及時得到服務。
二,兩類傳輸協議:TCP;UDP
TCP是Tranfer Control Protocol的 簡稱,是一種面向連接的保證可靠傳輸的協議。通過TCP協議傳輸,得到的是一個順序的無差錯的數據流。發送方和接收方的成對的兩個socket之間必須建 立連接,以便在TCP協議的基礎上進行通信,當一個socket(通常都是server socket)等待建立連接時,另一個socket可以要求進行連接,一旦這兩個socket連接起來,它們就可以進行雙向數據傳輸,雙方都可以進行發送 或接收操作。
UDP是User Datagram Protocol的簡稱,是一種無連接的協議,每個數據報都是一個獨立的信息,包括完整的源地址或目的地址,它在網路上以任何可能的路徑傳往目的地,因此能否到達目的地,到達目的地的時間以及內容的正確性都是不能被保證的。
比較:
UDP:1,每個數據報中都給出了完整的地址信息,因此無需要建立發送方和接收方的連接。
2,UDP傳輸數據時是有大小限制的,每個被傳輸的數據報必須限定在64KB之內。
3,UDP是一個不可靠的協議,發送方所發送的數據報並不一定以相同的次序到達接收方
TCP:1,面向連接的協議,在socket之間進行數據傳輸之前必然要建立連接,所以在TCP中需要連接
時間。
2,TCP傳輸數據大小限制,一旦連接建立起來,雙方的socket就可以按統一的格式傳輸大的
數據。
3,TCP是一個可靠的協議,它確保接收方完全正確地獲取發送方所發送的全部數據。
應用:
1,TCP在網路通信上有極強的生命力,例如遠程連接(Telnet)和文件傳輸(ftp)都需要不定長度的數據被可靠地傳輸。但是可靠的傳輸是要付出代價的,對數據內容正確性的檢驗必然佔用計算機的處理時間和網路的帶寬,因此TCP傳輸的效率不如UDP高。
2,UDP操作簡單,而且僅需要較少的監護,因此通常用於區域網高可靠性的分散系統中client/server應用程序。例如視頻會議系統,並不要求音頻視頻數據絕對的正確,只要保證連貫性就可以了,這種情況下顯然使用UDP會更合理一些。
三,基於Socket的java網路編程
1,什麼是Socket
網路上的兩個程序通過一個雙向的通訊連接實現數據的交換,這個雙向鏈路的一端稱為一個Socket。Socket通常用來實現客戶方和服務方的連接。Socket是TCP/IP協議的一個十分流行的編程界面,一個Socket由一個IP地址和一個埠號唯一確定。
但是,Socket所支持的協議種類也不光TCP/IP一種,因此兩者之間是沒有必然聯系的。在Java環境下,Socket編程主要是指基於TCP/IP協議的網路編程。
2,Socket通訊的過程
Server端Listen(監聽)某個埠是否有連接請求,Client端向Server 端發出Connect(連接)請求,Server端向Client端發回Accept(接受)消息。一個連接就建立起來了。Server端和Client 端都可以通過Send,Write等方法與對方通信。
對於一個功能齊全的Socket,都要包含以下基本結構,其工作過程包含以下四個基本的步驟:
(1) 創建Socket;
(2) 打開連接到Socket的輸入/出流;
(3) 按照一定的協議對Socket進行讀/寫操作;
(4) 關閉Socket.(在實際應用中,並未使用到顯示的close,雖然很多文章都推薦如此,不過在我的程序中,可能因為程序本身比較簡單,要求不高,所以並未造成什麼影響。)
3,創建Socket
創建Socket
java在包java.net中提供了兩個類Socket和ServerSocket,分別用來表示雙向連接的客戶端和服務端。這是兩個封裝得非常好的類,使用很方便。其構造方法如下:
Socket(InetAddress address, int port);
Socket(InetAddress address, int port, boolean stream);
Socket(String host, int prot);
Socket(String host, int prot, boolean stream);
Socket(SocketImpl impl)
Socket(String host, int port, InetAddress localAddr, int localPort)
Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
ServerSocket(int port);
ServerSocket(int port, int backlog);
ServerSocket(int port, int backlog, InetAddress bindAddr)
其中address、host和port分別是雙向連接中另一方的IP地址、主機名和端 口號,stream指明socket是流socket還是數據報socket,localPort表示本地主機的埠號,localAddr和 bindAddr是本地機器的地址(ServerSocket的主機地址),impl是socket的父類,既可以用來創建serverSocket又可 以用來創建Socket。count則表示服務端所能支持的最大連接數。例如:學習視頻網 http://www.xxspw.com
Socket client = new Socket("127.0.01.", 80);
ServerSocket server = new ServerSocket(80);
注意,在選擇埠時,必須小心。每一個埠提供一種特定的服務,只有給出正確的埠,才 能獲得相應的服務。0~1023的埠號為系統所保留,例如http服務的埠號為80,telnet服務的埠號為21,ftp服務的埠號為23, 所以我們在選擇埠號時,最好選擇一個大於1023的數以防止發生沖突。
在創建socket時如果發生錯誤,將產生IOException,在程序中必須對之作出處理。所以在創建Socket或ServerSocket是必須捕獲或拋出例外。
4,簡單的Client/Server程序
1. 客戶端程序
import java.io.*;
import java.net.*;
public class TalkClient {
public static void main(String args[]) {
try{
Socket socket=new Socket("127.0.0.1",4700);
//向本機的4700埠發出客戶請求
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
//由系統標准輸入設備構造BufferedReader對象
PrintWriter os=new PrintWriter(socket.getOutputStream());
//由Socket對象得到輸出流,並構造PrintWriter對象
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket對象得到輸入流,並構造相應的BufferedReader對象
String readline;
readline=sin.readLine(); //從系統標准輸入讀入一字元串
while(!readline.equals("bye")){
//若從標准輸入讀入的字元串為 "bye"則停止循環
os.println(readline);
//將從系統標准輸入讀入的字元串輸出到Server
os.flush();
//刷新輸出流,使Server馬上收到該字元串
System.out.println("Client:"+readline);
//在系統標准輸出上列印讀入的字元串
System.out.println("Server:"+is.readLine());
//從Server讀入一字元串,並列印到標准輸出上
readline=sin.readLine(); //從系統標准輸入讀入一字元串
} //繼續循環
os.close(); //關閉Socket輸出流
is.close(); //關閉Socket輸入流
socket.close(); //關閉Socket
}catch(Exception e) {
System.out.println("Error"+e); //出錯,則列印出錯信息
}
}
}
2. 伺服器端程序
import java.io.*;
import java.net.*;
import java.applet.Applet;
public class TalkServer{
public static void main(String args[]) {
try{
ServerSocket server=null;
try{
server=new ServerSocket(4700);
//創建一個ServerSocket在埠4700監聽客戶請求
}catch(Exception e) {
System.out.println("can not listen to:"+e);
//出錯,列印出錯信息
}
Socket socket=null;
try{
socket=server.accept();
//使用accept()阻塞等待客戶請求,有客戶
//請求到來則產生一個Socket對象,並繼續執行
}catch(Exception e) {
System.out.println("Error."+e);
//出錯,列印出錯信息
}
String line;
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket對象得到輸入流,並構造相應的BufferedReader對象
PrintWriter os=newPrintWriter(socket.getOutputStream());
//由Socket對象得到輸出流,並構造PrintWriter對象
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
//由系統標准輸入設備構造BufferedReader對象
System.out.println("Client:"+is.readLine());
//在標准輸出上列印從客戶端讀入的字元串
line=sin.readLine();
//從標准輸入讀入一字元串
while(!line.equals("bye")){
//如果該字元串為 "bye",則停止循環
os.println(line);
//向客戶端輸出該字元串
os.flush();
//刷新輸出流,使Client馬上收到該字元串
System.out.println("Server:"+line);
//在系統標准輸出上列印讀入的字元串
System.out.println("Client:"+is.readLine());
//從Client讀入一字元串,並列印到標准輸出上
line=sin.readLine();
//從系統標准輸入讀入一字元串
} //繼續循環
os.close(); //關閉Socket輸出流
is.close(); //關閉Socket輸入流
socket.close(); //關閉Socket
server.close(); //關閉ServerSocket
}catch(Exception e){
System.out.println("Error:"+e);
//出錯,列印出錯信息
}
}
}
5,支持多客戶的client/server程序
前面的Client/Server程序只能實現Server和一個客戶的對話。在實際應用 中,往往是在伺服器上運行一個永久的程序,它可以接收來自其他多個客戶端的請求,提供相應的服務。為了實現在伺服器方給多個客戶提供服務的功能,需要對上 面的程序進行改造,利用多線程實現多客戶機制。伺服器總是在指定的埠上監聽是否有客戶請求,一旦監聽到客戶請求,伺服器就會啟動一個專門的服務線程來響 應該客戶的請求,而伺服器本身在啟動完線程之後馬上又進入監聽狀態,等待下一個客戶的到來。
D. 外網伺服器如何與內網客戶端通信
我們上網使用的是TCP/IP協議,通訊時使用的主要包括TCP協議和UDP協議,具體有什麼區別就不多說了,TCP也好UDP也好,為了區分接受的對象,都包含了叫做埠的一個標示,你去連接QQ時,會使用一個埠,包括你的IP地址、協議(TCP、UDP)、埠,構成一個應用連接,發出數據的也會包括這些內容,到路由器轉發到Internet時,會進行NAT,IP地址轉換,將內部地址轉換成Internet上的公用地址(一般我們使用私用地址,怎麼劃分不多說),路由器會記住你的IP、協議及埠號,並將你的地址用路由器的地址、埠代替,然後傳輸到QQ伺服器;別人給你的消息,QQ伺服器會順著你的這個連接,將數據發回到路由器,路由器根據協議及埠,找到你的IP、協議、埠,將數據包重新包裝一下,發回到你的機器。
E. 網站有多台伺服器,怎麼實現同步
1.首先域名並非直接解析到一個IP上,你可以網路下DNSPOD,就會明白,域名可以根據地域不通解析到不同的伺服器IP上。
2.非常多的集群並不是你直接可以訪問到的,你所訪問到的只是前面一台入口伺服器。這台伺服器負責轉發請求。它可以根據目前後端幾台專業伺服器的運行狀態,將當前你所訪問的用戶的請求轉發到一個比較健康的伺服器上面去。這方面的軟體有很多,比如Nginx,還有淘寶的Tengine,還有個專業叫LVS。
3.在後端的伺服器上每台都放上我們的代碼,然後坐等前面的入口轉發給我們請求。如果接到請求,我們就進行響應,然後返回給入口,入口再返回給用戶,最終呈現在你面前。
4.另外,用戶上傳的圖片之類的動態文件,要麼就專門放在文件伺服器上,一般需要獨立的域名,如http://img1.xxx.com等等,要麼就使用Rsync進行實時同步。
F. 區域網伺服器怎樣做到與各個VLAN都能通訊
1、需要三層交換,以cisco三層交換為例
int vlan 10
ip add 192.168.10.1 255.255.255.0
no shut
###
int vlan 20
ip add 192.168.20.1 255.255.255.0
no shut
2、如果沒三層交換,又沒人給錢,那就用PC或伺服器,多網卡。兩個網卡上分別配置192.168.10.1和20.1
2.1 如果你會裝linux,又會配IP地址,那麼linux最省事,不需要會其他操作了。
每次開機echo 1 >/proc/sys/net/ipv4/ip_forward
2.2 如果你不會,那就windows,win2000以後管理工具里就有路由和遠程訪問那項,用向導配置成路由器就好了。
2.3 或者找個第三方軟體,比如winroute、wingate、sygate之類的過時工具都行,最主要是小巧玲瓏,ISA就別用了。推薦winroute。
你沒說你的伺服器在哪個VLAN里,如果既不是10也不是20,那你需要更多的介面。
G. 如何讓多台伺服器實現數據同步
如何讓所有伺服器之間數據同步
1、採用高可用sureHA軟體鏡像型,一台主伺服器,一台備伺服器,通過網線實時將數據備份,實現伺服器雙機互備的功能,此方式保證多台伺服器之間數據的一致性。
2、採用高可用sureHA雙機熱備共享型。一台主伺服器,一台備伺服器,鏈接一台存儲,將數據放到存儲裡面,實現數據的共享。此方式保證多台伺服器之間數據的一致性。
3、可實現伺服器虛擬化,把所有的伺服器物理資源都整理成一個大的資源池,數據都存放在磁碟陣列上面,所有應用系統都通過調用磁碟陣列裡面的數據,此方式保證多台伺服器之間數據的一致性。
不管技術怎麼實現,在伺服器方面還是需要人為的進行操作和監督,伺服器同步也成為不可缺少的一部分。所以海騰數據的伺服器的硬體要求和機房的線路穩定是保障以上實現的關鍵。參考海騰數據伺服器租用
伺服器數據同步
H. 如何實現多台rs485通訊
RS485如何實現多台rs485通訊:
RS485採用差分信號負邏輯,+2V~+6V表示「0」,- 6V~- 2V表示「1」。RS485有兩線制和四線制兩種接線,四線制是全雙工通訊方式,兩線制是半雙工通訊方式。
為何RS485要實現多主機控制呢?
RS485採用的單雙工工作模式,為了防止匯流排上的競爭一般都只能有一台主機,並採用一次主機詢問,一次從機應答方式。但是有的時候,我們確實需要多台主機去監控RS485設備,比如需要三台電腦都可以監控相同的幾個RS485設備,而且最好共用RS485匯流排。這個問題雖然在實際中經常碰到,但是沒有很好的解決。其難點在於,2台主機是完全獨立的,那麼它們沒有協調機制,如果2台主機同時詢問從設備,那麼必然引起RS485匯流排上的數據沖突。
HighTek串口伺服器有哪些優勢呢?
1.16年的經驗積累,方案成熟,產品穩定;
2.多年合作夥伴:華為、富士康、捷順、達實等;
3.可以實現6台主機控制RS485設備;
4.AES加密功能(可選),使用戶的數據得到可靠的安全保障;
5.採用透明傳輸的方式,用戶不用知道復雜的TCP/IP協議;
6.直觀的中文菜單設置界面,使安裝配置更加簡單;
HighTek專業生產串口伺服器、USB串口線、RS23轉RS485、RS232轉RS422、RS485信號放大器等串口通訊設備,
I. 雲伺服器與本地伺服器如何進行數據通訊
1、直連資料庫
Python直連到雲資料庫上,與本地操作都一樣,只不過資料庫IP由內網IP轉為雲伺服器IP。這種情況你需要注意的是:
直連資料庫時所需要的敏感信息(資料庫名,資料庫賬號,資料庫密碼)需要通過加解密手法,盡量避免泄露;
開放雲資料庫的遠程訪問許可權,這個方面就是需要調防火牆(沒有防火牆就跳過),另外如果是MySQL,需要把資料庫賬號設置為允許遠程訪問的狀態,這個網上有教程,仔細看都沒問題;
直連資料庫優點在於開發簡單,我們不需要考慮tcp層如何運作,但缺點是容易資料庫暴露,被人拿到資料庫數據;
2、中間件
在雲伺服器上部署中間件,中間件有兩種:tcp和http,無論那種你都需要構建好自己的通信協議,敏感數據加解密協議等等,在中間件框架下完成原直連資料庫所進行的交互操作,如果用的人多了還要考慮性能問題。當然,如果用中間件,資料庫是不需要開放遠程訪問許可權的(如果有防火牆,是需要在防火牆中,允許中間件埠的通信)。
中間件優點在於只要沒出什麼大bug,不會泄露資料庫,缺點在於開發難度上;