socket c/s分佈式編程
?
SOCKET:
Socket接口介于應用程序與硬件之間。對Socket的理解可以簡化為:它是封裝了數據流(Stream)的從機器到機器的一條軟接線,通過這條軟接線,并借助于線兩端的收發程序,網絡上的機器間實現了信息的交流與互通。分離在軟線兩端的應用程序(服務器端程序和客戶端程序)可以通過調用Socket接口來開發具有TCP/IP網絡功能的程序應用。
作為客戶端,即要知道服務程序所在房間的房間號(IP地址),又要知道后門的位置(端口)。這樣才能正確地進入房間。
?
數據編發:
軟線建立完成后,還必須有數據傳輸的規則,這就是服務端和客戶端商量著來的事情了。數據使用什么封裝,傳送時遵循什么規則(收發協議)、傳輸是否采用壓縮技術和加解密技術等。將數據封裝起來,可以讓程序的設計者像操作本地文件一樣來操作流動在網絡上的信息。不同的數據封裝方式將決定客戶端和服務器端數據的訪問方式。編發類型僅限于標量(基本型別)和字符串對象。複雜對象需要我們考慮有關對象到字節的串行化以及字節流到對象的還原問題。
?
多線程
作為一種例程服務,必須要考慮其同時服務于多用戶的問題。這個問題的解決可以通過線程技術來實現,而且相當簡單。基本思路是:在服務器內產生單一的監聽Socket,并循環調用accept()等待新的軟線連接。Accept()每返回一次,就會帶回與特定客戶有關的Socket,將該Socket的運作安排到一個獨立的線程中,這樣其服務就是針對特定客戶的了。考慮到多線程對共享資源訪問時的同步問題如果處理不當就會造成線程的不安全,必須為臨界區設置線程鎖。
?
基于TCP的收發協議
??? 使用Socket編程,必須明確客戶端與服務器端的收發協議。以下是針對該實例定義的收發協議:
客戶端:發送報頭9999,發送用戶名(String),發送密碼(String)
服務端:接收報頭9999,接收用戶名和密碼,驗證登錄權限
??????? 是合法用戶:發送報頭9999,發送歡迎信息(String)
??????? 是非法用戶:發送報頭-1,發送警告信息(UTF)
客戶端:接收報頭9999,獲取歡迎信息(String)
轉載于:https://www.cnblogs.com/hnxxcxg/archive/2009/07/09/2940766.html
總結
以上是生活随笔為你收集整理的socket c/s分佈式編程的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 汪文君PowerMock实战视频
- 下一篇: PHP7 学习笔记(十一)使用phpst
