国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python cs架構實現簡單文件傳輸

2020-02-15 22:35:47
字體:
來源:轉載
供稿:網友

本文為大家分享了python cs架構實現簡單文件的傳輸代碼,供大家參考,具體內容如下

要實現簡單文件的傳輸我們必須考慮這些問題:

1.什么是c/s架構?

顧名思義,就是客戶端端/服務器架構。不同的人可能回答不一,但是有一點是相同的:服務器是一個軟件或硬件,用于向一個或多個客戶端提供所需要的服務,服務器存在的唯一目的就是等待客戶的請求,給這些客戶服務,然后等待其他的請求。

2.客戶端與服務端如何通信?

其實說白了就是互聯網中兩個主機該如何通信,首先我們用ip地址可以標示一臺主機,這樣就可以通信了么?當然也不行,我們還得標示主機中的進程,當然協議也是不可或缺的,是udp報文協議還是tcp數據流協議,這的看你個人的需求。用套介子來作為一個標示符,唯一標識網絡進程。

想明白這兩個問題我覺得這個問題有三分之一已經解決了,接下來呢我選擇tcp協議來傳輸。

服務端:

        采用socket()函數 定義socket描述字

        bind()函數來把地址族中一個特定地址賦給socket,簡單來說就是把一個ipv4/ipv6地址+端口號組合賦給socket

        listen()函數把socket變成被動類型的,等待客戶連接請求。

        當客戶端發來消息時用accept()函數來接受請求,同時給服務端返回客戶端的socket描述字,接下來服務端以接收到的描述字來向客戶端發送信息以及接受信息。

        我們這個程序是實現文件傳輸,我的想法是類似于ftp程序接受客戶上傳下載文件的需求。服務端啟動后監聽端口(我用的9500)等待客戶連接。客戶端三次握手建立連接后,客戶輸入命令來向客戶端發起請求,輸入‘ls'命令可以查看服務端可下載的文件,輸入‘put   文件名',‘get  文件名'可以上傳下載文件。上傳文件時客戶端打開本地文件以二進制方式讀取文件內容并同時調用send()函數發送文件內容,服務端以寫方式打開文件并將客戶端上傳內容寫入文件,實現文件的上傳。下載文件與此類似,客戶端上傳送‘get  文件名'命令同時以寫方式打開文件 ,服務端收到命令以讀方式打開文件,并發送給服務端。

tcp三次握手建立連接:

當客戶端調用connect時,觸發了連接請求,向服務器發送了SYN J包,這時connect進入阻塞狀態;服務器監聽到連接請求,即收到SYN J包,調用accept函 數接收請求向客戶端發送SYN K ,ACK J+1,這時accept進入阻塞狀態;客戶端收到服務器的SYN K ,ACK J+1之后,這時connect返回,并對SYN K進行確認;服務器收到ACK K+1時,accept返回,至此三次握手完畢,連接建立。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 襄汾县| 泸州市| 宜州市| 顺义区| 贺兰县| 东方市| 南岸区| 祁门县| 深泽县| 江永县| 武胜县| 游戏| 准格尔旗| 南雄市| 天等县| 新巴尔虎右旗| 石嘴山市| 邢台县| 花莲县| 玉林市| 阜宁县| 章丘市| 邵武市| 贺兰县| 板桥市| 中江县| 基隆市| 集贤县| 宁国市| 安阳市| 临朐县| 蒙城县| 江源县| 杭锦旗| 潞城市| 成安县| 宿州市| 贵港市| 辉县市| 三台县| 海南省|