日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TCP和UDP套接字编程

發布時間:2024/9/30 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TCP和UDP套接字编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Socket簡單介紹

如果要在應用層調用傳輸層的服務,進行相關程序的設計,就要涉及到套接字編程。套接字也稱之為Socket,本質上它就是利用傳輸層提供的一系列Api來進行網絡應用程序的設計。
網絡應用程序如果要進行套接字編程,需要明確的創建、使用及釋放套接字。
套接字編程是典型的C/S模式。
從下圖中可以形象的看到套接字的作用:

(1)套接字是一個主機本地應用程序所創建的,為操作系統所控制的接口。
(2)應用程序通過這個接口,使用傳輸層提供的服務,跨網絡發送/接收消息到/從其它應用進程。

二、用TCP進行套接字編程

套接字編程有面向連接和無連接兩種實際上就是TCP套接字編程和UDP套接字編程。
可以使用源端口號來區別客戶。
使用TCP進行套接字編程時客戶必須初始聯系服務器,這時服務器進程必須先運行,創建套接字來迎候客戶的初始聯系。
那么客戶如何初始聯系服務器呢?主要有3個步驟:
(1)創建客戶本地TCP套接字。
(2)指定服務器進程的IP地址和端口號。
(3)一旦客戶創建套接字,客戶TCP就發起3次握手并建立與服務器TCP連接。
一旦客戶初始聯系服務器,服務器TCP為服務器進程創建1個新的套接字與客戶通信。這里允許服務器與多個客戶通信,而端口號被用來區分客戶。
從應用程序的角度來看,TCP為客戶和服務器提供了可靠的、順序的、字節流的傳輸。

TCP客戶/服務器套接字交互流程

流程圖如下:

(1)服務器創建一個在端口x上的套接字,然后等待連入請求
(2)在服務器等待連入請求的過程中客戶機如果要連接服務器它會創建一個到服務器的IP地址然后和服務器的端口號x相連接的套接字。
(3)使用這個套接字和服務器進行TCP連接建立
(4)連接建立好以后客戶機使用套接字向服務器端發送相關請求。
(5)服務器端讀到請求以后使用寫應答的方式把數據發送給客戶機。
(6)客戶機讀取應答,當所有的讀寫操作都進行完成以后,客戶機關閉套接字。
(7)服務器也關閉套接字
注意:服務器這時關閉的是客戶機剛才建立的TCP連接上所對應的套接字,但是監聽套接字還在,因為監聽套接字要等待下一次的到來。

三、用UDP進行套接字編程

與TCP不同:
(1)當用UDP進行套接字編程時沒有初始握手手段;
(2)發送方明確將接收方的IP地址和端口號加入到每個分組。
(3)服務器必須從接收到的分組中析取發送方進程的IP地址、端口號。
這種方式在發送數據時可能被亂序收到或丟失。
從應用程序的角度來看UDP在客戶和服務器之間提供一組字節的不可靠傳輸。

UDP客戶/服務器套接字交互流程

流程圖如下:

(1)服務器對入棧請求創建套接字,端口是x。
(2)客戶機如果要給服務器端發送數據,它也創建一個套接字,這個套接字使用服務器的ip地址和服務器的端口,直接使用這個套接字發送數據包請求。
(3)服務器從服務器套接字中讀請求。
(4)服務器收到請求后將應答寫到服務器套接字上面,在寫應答上面有客戶機主機地址和端口號。
(5)客戶機從套接字上面讀取應答。
(5)這個過程一直進行,客戶機如果收發完畢就退出,而服務器又回到前一步繼續等待下一個客戶機套接字請求的到來。

總結

以上是生活随笔為你收集整理的TCP和UDP套接字编程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。