網路程式設計的基本概念和術語
ip位址的作用是標識網路中的一台計算機,網路中的每台計算機都有乙個ip位址。ip位址相當於乙個手機號碼,使用這個位址可以訪問一台計算機。ip位址具有統一的格式,ipv4位址是32位長度的二進位制數值,佔4個位元組,如11000000 10101000 00000001 00000110.二進位制的數值不便於記憶,可以把每個位元組用乙個整數(十進位制)來表示。如192.168.1.1 。在同乙個網路中,ip位址是唯一的。在終端(linux下)中輸入
#ifconfig
可以檢視本機ip資訊,顯示如下
埠是計算機中為了表示計算機中訪問網路的各種應用程式的編號。程式在訪問網路或接受訪問時,埠號會標識這一網路資料屬於哪個程式。這裡的埠並非網絡卡接線的埠,而是對應不同程式的邏輯編號,不是實際存在的。
埠號是乙個16位的無符號整數,取值範圍0~65535,低於256的埠號被系統保留,主要用於系統程序通訊。如www服務使用的是80號埠,ftp服務使用21號埠。其他埠號都是自由的,程式設計時可以呼叫。
埠號(port)用於區分網路通訊中主機上不同的網路應用程式。
tcp---傳輸控制協議,提供的是面向連線、可靠的位元組流服務。當客戶和伺服器彼此交換資料前,必須先在雙方之間建立乙個tcp連線,之後才能傳輸資料。tcp提供超時重發,丟棄重複資料,檢驗資料,流量控制等功能,保證資料能順序地從一端傳到另一端。
udp---使用者資料報協議,是乙個簡單的面向資料報的運輸層協議。提供的是面向無連線、不可靠的資料傳輸服務。udp不提供可靠性,它只是把應用程式傳給ip層的資料報傳送出去,但是並不能保證它們能到達目的地。由於udp在傳輸資料報前不用在客戶和伺服器之間建立乙個連線,且沒有超時重發等機制,不保證資料按順序傳遞,故而傳輸速度很快。
程式訪問網路進行資料通訊時,tcp和udp會遇到同時為多個應用程式程序提供併發服務的問題。多個tcp連線或多個應用程式程序可能需要通過同乙個tcp協議埠傳輸資料。為了區別不同的應用程式程序和連線,許多計算機作業系統為應用程式與tcp/ip協議互動提供了稱為套接字(socket)的介面。
區分不同應用程式程序間的網路通訊和連線,主要有3個引數:通訊的目的ip位址、使用的傳輸層協議(tcp或udp)和使用的埠號。通過將這3個引數結合起來,與乙個「插座」socket繫結,應用層就可以和傳輸層通過套接字介面,區分來自不同應用程式程序或網路連線的通訊,實現資料傳輸的併發服務。
要通過internet進行通訊,至少需要一對套接字,其中乙個執行在客戶端,稱之為clientsocket,另乙個執行於伺服器端面,稱為serversocket。根據連線啟動的方式以及本地要連線的目標,套接字之間的連線過程可以分為三個步驟:伺服器監聽、客戶端請求、連線確認。
伺服器監聽是指
服務端套接字並不定位具體的
客戶端套接字,而是處於等待連線的狀態,實時監控網路狀態。
客戶端請求是由客戶端的套接字提出連線請求,要連線的目標是伺服器端套接字。為此,
客戶端的套接字必須首先描述它要連線的伺服器的套接字,指出伺服器套接字的位址和
埠號,然後再向伺服器端套接字提出連線請求。
連線確認是當伺服器端套接字監聽到或者說接收到客戶端套接字的連線請求時,它就響應客戶端套接字的請求,建立乙個新的執行緒,把伺服器端套接字的資訊傳送給客戶端,一旦客戶端確認了此連線,連線即可建立。而伺服器端繼續處於監聽狀態,繼續接收其他客戶端的連線請求。
使用套接字進行資料處理有兩種基本模式:同步和非同步。
同步模式:
同步模式的特點是在通過socket進行連線、接收、傳送資料時,客戶機和伺服器在接收到對方響應前會處於阻塞狀態,即一直等到收到對方請求進才繼續執行下面的語句。可見,同步模式只適用於資料處理不太多的場合。當程式執行的任務很多時,長時間的等待可能會讓使用者無法忍受。
非同步模式:
非同步模式的特點是在通過socket進行連線、接收、傳送操作時,客戶機或伺服器不會處於阻塞方式,而是利用callback機制進行連線、接收、傳送處理,這樣就可以在呼叫傳送或接收的方法後直接返回,並繼續執行下面的程式。可見,非同步套接字特別適用於進行大量
資料處理的場合。
使用同步套接字進行程式設計比較簡單,而非同步套接字程式設計則比較複雜。
基本概念和術語
資料型別和抽象資料型別 本篇文章將講解資料結構的基本概念和術語,這種概念性的東西往往是催人入睡的,當然了,沒有誰能把概念講出花來,概念就是枯燥的。由於專欄的體系,我有必要講一講關於資料結構的基本概念和術語。資料是指能輸入計算機且能被計算機處理的各種符號的集合。資料是資訊的載體,是對客觀事物符號化的表...
基本概念和術語
資料 是描述客觀事物的符號,是計算機中可以操作的物件,是能被計算機識別,並輸入給計算機處理的符號集合。資料不僅僅包括整型 實型等數值型別,還包括字元及聲音 影象等非數值型別。我們所說的資料其實就是符號,這些符號具備的前提是 1.可以輸入到計算機中 2.能唄計算機處理 資料元素 是組成資料的 有一定意...
網路程式設計 socket基本概念
什麼是socket?socket是連線應用程式和網路驅動程式的橋梁,socket在應用程式中建立,通過繫結操作和驅動程式建立聯絡。什麼是ip位址?在網路上,主機與主機間的通訊,首先需要知道對通訊方主機的名稱。在internet上用ip位址來標記網路裝置。廣義上的主機可以是工作在網路上的工作台 伺服器...