首頁(yè)技術(shù)文章正文

udp和tcp的服務(wù)端和客戶端

更新時(shí)間:2018-07-20 來(lái)源:黑馬程序員 瀏覽量:

socket簡(jiǎn)介

ocket(簡(jiǎn)稱 套接字) 是進(jìn)程間通信的一種方式,它與其他進(jìn)程間通信的一個(gè)主要不同是:

它能實(shí)現(xiàn)不同主機(jī)間的進(jìn)程間通信,我們網(wǎng)絡(luò)上各種各樣的服務(wù)大多都是基于 Socket 來(lái)完成通信的

例如我們每天瀏覽網(wǎng)頁(yè)、QQ 聊天、收發(fā) email 等等

udp網(wǎng)絡(luò)程序-發(fā)送、接收數(shù)據(jù)

1. udp網(wǎng)絡(luò)程序-發(fā)送數(shù)據(jù)

創(chuàng)建一個(gè)基于udp的網(wǎng)絡(luò)程序流程很簡(jiǎn)單,具體步驟如下:

創(chuàng)建客戶端套接字
發(fā)送/接收數(shù)據(jù)
關(guān)閉套接字
1532076715099_1.jpg
代碼如下:

1532076722428_2.jpg
2. udp網(wǎng)絡(luò)程序-發(fā)送、接收數(shù)據(jù)
1532076735928_3.jpg
tcp客戶端

tcp的客戶端與服務(wù)端

大家都使用過(guò) QQ、微信、支付寶、外賣、銀行等等各種手機(jī) APP, 這些軟件叫做客戶端。
這些客戶端軟件都有一個(gè)特點(diǎn): 如果只有客戶端軟件是無(wú)法享受到軟件提供的服務(wù). 客戶端軟件需要與服務(wù)器端軟件相互配合才能完成. 簡(jiǎn)言之, 客戶端就是接受服務(wù)的一方, 服務(wù)器端就是提供服務(wù)的一方。

tcp有嚴(yán)格的客戶端和服務(wù)端之分?;?TCP 傳輸方式的通信就必須事先建立連接, 則有一方是主動(dòng)連接的,而另一方是被連接的; 主動(dòng)連接的一方一般都是客戶端, 被連接的一方一般都是服務(wù)端。
1532076743115_4.jpg
tcp客戶端構(gòu)建流程

示例代碼:

1532076750319_5.jpg
<1>tcp客戶端
1532076758631_6.jpg
tcp服務(wù)器

生活中的電話機(jī)
如果想讓別人能更夠打通咱們的電話獲取相應(yīng)服務(wù)的話,需要做以下幾件事情:

買個(gè)手機(jī)
插上手機(jī)卡
設(shè)計(jì)手機(jī)為正常接聽(tīng)狀態(tài)(即能夠響鈴)
靜靜的等著別人撥打

tcp服務(wù)器

如同上面的電話機(jī)過(guò)程一樣,在程序中,如果想要完成一個(gè)tcp服務(wù)器的功能,需要的流程如下:

socket創(chuàng)建一個(gè)套接字
bind綁定ip和port
listen使套接字變?yōu)榭梢员粍?dòng)連接,即開啟監(jiān)聽(tīng)
accept等待客戶端的連接
recv/send接收發(fā)送數(shù)據(jù)

一個(gè)很簡(jiǎn)單的tcp服務(wù)器如下:
1532076766100_7.jpg
<1>tcp服務(wù)器
1532076773241_8.jpg

1532076781975_9.jpg

作者:黑馬程序員人工智能+Python培訓(xùn)學(xué)院

首發(fā):http://python.itheima.com/

   

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!