socket 套接字通訊

2021-06-06 21:03:25 字數 821 閱讀 1935

要通過internet進行通訊,至少需要一對套接字,其中乙個執行在客戶端,稱之為clientsocket,另乙個執行於伺服器端面,稱為serversocket。根據連線啟動的方式以及本地要連線的目標,套接字之間的連線過程可以分為三個步驟:伺服器監聽、客戶端請求、連線確認。

伺服器監聽是指服務端套接字並不定位具體的客戶端套接字,而是處於等待連線的狀態,實時監控網路狀態。

客戶端請求是由客戶端的套接字提出連線請求,要連線的目標是伺服器端套接字。為此,客戶端的套接字必須首先描述它要連線的伺服器的套接字,指出伺服器套接字的位址和埠號,然後再向伺服器端套接字提出連線請求。

連線確認是當伺服器端套接字監聽到或者說接收到客戶端套接字的連線請求時,它就響應客戶端套接字的請求,建立乙個新的執行緒,把伺服器端套接字的資訊傳送給客戶端,一旦客戶端確認了此連線,連線即可建立。而伺服器端繼續處於監聽狀態,繼續接收其他客戶端的連線請求。

使用套接字進行資料處理有兩種基本模式:同步和非同步。

同步模式:

同步模式的特點是在通過socket進行連線、接收、傳送資料時,客戶機和伺服器在接收到對方響應前會出於阻塞狀態,即一直等到收到對方請求進才繼續執行下面的語句。可見,同步模式只適用於資料處理不太多的場合。當程式執行的任務很多時,長時間的等待可能會讓使用者無法忍受。

非同步模式:

非同步模式的特點是在通過socket進行連線、接收、傳送操作時,客戶機或伺服器不會處於阻塞方式,而是利用callback機制進行連線、接收、傳送處理,這樣就可以在呼叫傳送或接收的方法後直接返回,並繼續執行下面的程式。可見,非同步套接字特別適用於進行大量資料處理的場合。

使用同步套接字進行程式設計比較簡單,而非同步套接字程式設計則比較複雜。

利用Socket套接字通訊

我只寫了服務端程式。服務端會了,客服端就好寫了。我的伺服器功能是個小計算器。server.c socket 實現通訊。客服端輸入表示式經過伺服器計算出結果發給客服端 伺服器端建立任務 監聽客戶端,收到資料,發給服務端的子程序讓子程式,子程式呼叫execlp bc命令計算出結果給父程序,父程序傳給伺服...

java通訊 套接字Socket

無論用什麼語言開發,socket都是繞不過去的乙個環節,若以簡單論,除了檔案操作,程序間通過socket通訊還是比較方便的。對於主機a和b,若a主機想向b主機傳送資訊,那麼基本步驟如下 1.首先確保b主機上socket服務端開啟,服務端會監聽本機上的乙個埠,例如8080。socket服務端會以阻塞形...

Socket實現套接字通訊

套接字工作流程 import socket 1 買手機 phone socket.socket 2 繫結手機卡 phone.bind 127.0.0.1 8080 3 開機 phone.listen 5 4 等 連線 conn,addr phone.accept 5 收發訊息 data conn.r...