TCP IP網路程式設計

2021-09-22 05:31:47 字數 2536 閱讀 2489

tcp/ip 是供已連線網際網路的計算機進行通訊的通訊協議。 

tcp/ip 定義了裝置(並非只有計算機)如何連入網際網路,以及資料如何在它們之間傳輸的標準。

ip(internet protocol)網際網路協議。從這個名稱我們就可以知道ip協議的重要性。在現實生活中,我們進行貨物運輸時都是把貨物包裝成乙個個的紙箱或者是貨櫃之後才進行運輸,在網路世界中各種資訊也是通過類似的方式進行傳輸的。ip協議規定了資料傳輸時的基本單元和格式。如果比作貨物運輸,ip協議規定了貨物打包時的包裝箱尺寸和包裝的程式。 除了這些以外,ip協議還定義了資料報的遞交辦法和路由選擇。同樣用貨物運輸做比喻,ip協議規定了貨物的運輸方法和運輸路線。

我們已經知道了ip協議很重要,ip協議已經規定了資料傳輸的主要內容,那tcp(transmission control protocol)協議是做什麼的呢?不知大家發現沒有,在ip協議中定義的傳輸是單向的,也就是說發出去的貨物對方有沒有收到我們是不知道的。就好像8毛錢乙份的平信一樣。那對於重要的信件我們要寄**信怎麼辦呢?tcp協議就是幫我們寄「**信」的。tcp協議提供了可靠的物件導向的資料流傳輸服務的規則和約定。簡單的說在tcp模式中,對方發乙個資料報給你,你要發乙個確認資料報給對方。通過這種確認來提供可靠性。

udp與tcp位於同一層,但它不管資料報的順序、錯誤或重發。因此,udp不被應用於那些使用虛電路的面向連線的服務,udp主要用於那些面向查詢---應答的服務,例如nfs。相對於ftp或telnet,這些服務需要交換的資訊量較小。使用udp的服務包括ntp(網路時間協議)和dns(dns也使用tcp)。

欺騙udp包比欺騙tcp包更容易,因為udp沒有建立初始化連線(也可以稱為握手)(因為在兩個系統間沒有虛電路),也就是說,與udp相關的服務面臨著更大的危險。

tcp和udp服務通常有乙個客戶/伺服器的關係,例如,乙個telnet服務程序開始在系統上處於空閒狀態,等待著連線。使用者使用telnet客戶程式與服務程序建立乙個連線。客戶程式向服務程序寫入資訊,服務程序讀出資訊並發出響應,客戶程式讀出響應並向使用者報告。因而,這個連線是雙工的,可以用來進行讀寫。

兩個系統間的多重telnet連線是如何相互確認並協調一致呢?tcp或udp連線唯一地使用每個資訊中的如下四項進行確認:

1.源ip位址 傳送包的ip位址。

2.目的ip位址 接收包的ip位址。

3.源埠 源系統上的連線的埠。

4.目的埠 目的系統上的連線的埠。

埠是乙個軟體結構,被客戶程式或服務程序用來傳送和接收資訊。乙個埠對應乙個16位元的數。服務程序通常使用乙個固定的埠,例如,smtp使用25。這些埠號是『廣為人知』的,因為在建立與特定的主機或服務的連線時,需要這些位址和目的位址進行通訊。

在.net中,我們用tcpclient和tcplistener類來實現點對點通訊,這兩個命名空間位於此system.net.sockets

tcplistener 類提供一些簡單方法,用於在阻止同步模式下偵聽和接受傳入連線請求。可使用 tcpclient 或 socket 來連線 tcplistener。可使用 ipendpoint、本地 ip 位址及埠號或者僅使用埠號,來建立 tcplistener。

tcpclient 類提供了一些簡單的方法,用於在同步阻止模式下通過網路來連線、傳送和接收流資料。

一服務端一客戶端通訊

服務端code

需要引入的命名空間:

using system.net;

using system.net.sockets;

using system.io;

using system.threading;

需要定義的字段:

thread thr = null;

streamreader sr;

streamwriter sw;

監控單擊事件按鈕對應方法:

private void con_but_click(object sender, eventargs e)

服務客戶端一對一

public void gettext()

}catch

}向old_tb中寫聊天記錄

void writestring(string s)

客戶端code

需要引入的命名空間:

using system.net;

using system.net.sockets;

using system.io;

using system.threading;

寫傳送和收到資訊的方法:

void writestring(string s)

寫傳送方的方法

if (new_tb.text.trim().length > 0)

udp/ip通訊

服務端code

監控按鈕

thr = new thread(new threadstart(udpmethod));

thr.start();

void udpmethod()

}客戶端code

傳送按鈕

udpmethod();

void udpmethod()

TCP IP網路程式設計

套接字 傳輸網路資料的軟體裝置。tcp的特點 可靠的 按序傳遞的 基於位元組的面向連線的資料傳輸方的協議。傳輸過程中資料不會消失,按序傳輸資料,傳輸的資料不存在資料邊界。udp的特點 不可靠的 無序的 以資料高速傳輸為目的的協議。強調快速傳輸而非傳輸順序,傳輸的資料可能丟失也可能損壞,傳輸的資料有資...

網路程式設計學習 tcp ip程式設計

tcp 不記錄訊息邊界 udp 記錄訊息邊界 用到的結構體 struct sockaddr un 例子 struct sockaddr un serveraddr serveraddr.sun family af unix server socket strcpy serveraddr.sun pa...

TCP IP 網路程式設計(五)

select並不是把發生變化的檔案描述符單獨集中到一起,而是通過觀察作為監視物件的fd set函式的變化,因此不能避免對所有監視物件的迴圈語句。而且,監視物件變數會發生變化,在呼叫select函式之前要複製並儲存原有資訊,並在每次呼叫時傳遞新的監視物件資訊。傳遞新的監視物件資訊是資源消耗的主要原因,...