欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解如何用python實現(xiàn)一個簡單下載器的服務(wù)端和客戶端

 更新時間:2019年10月28日 10:52:40   作者:PXH樸信惠  
這篇文章主要介紹了詳解如何用python實現(xiàn)一個簡單下載器的服務(wù)端和客戶端,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

話不多說,先看代碼:

客戶端:

import socket
def main():
  #creat:
  download_client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  #link:
  serv_ip=input("please input server IP")
  serv_port=int(input(("please input server port")))
  serv_addr=(serv_ip,serv_port)
  download_client.connect(serv_addr)
  #send and receive
  filename=input("please input filename")
  download_client.send(filename.encode("utf-8"))
  download_data=download_client.recv(1024)
  if download_data:
    with open("receive_"+filename,"wb") as f:
      f.write(download_data)
  download_client.close()
if __name__ == '__main__':
  main()

服務(wù)器:

import socket
def send_data(server_socket):
  while True:
    filename = server_socket.recv(1024).decode("utf-8")
    print("用戶請求下載對象是%s"%filename)
    if filename:
      with open(filename, "rb") as f:
        file_data = f.read()
        server_socket.send(file_data)
    else:
      server_socket.close()
      break
def main():
  #creat
  server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  #bind
  server.bind(("",4399))
  #listen
  server.listen(128)
  #accept
  while True:
    print("waiting for quest")
    server_socket,client_ip=server.accept()
    print("connected")
    send_data(server_socket)
  #close
  server.close()
if __name__ == '__main__':
  main()

前幾天有寫一個基于UDP的簡單程序,今天學習了TCP,TCP與UDP 的區(qū)別與聯(lián)系其實已經(jīng)寫得很清楚了,這里不再多說。今天使用的TCP,在文件下載方面應(yīng)用更加廣泛(可靠)。客戶端分析:

1.注意到TCP協(xié)議是面向連接的,也就是每一個TCP,從客戶端發(fā)送請求,需要與服務(wù)器建立一個連接(UDP不用)。所以這一點體現(xiàn)在程序中就有了一個connect動作

2.目前程序recv方法僅支持1kb,收發(fā)大文件會出錯,這點在我之后搞清楚大文件下載再說

服務(wù)器分析:

1.服務(wù)器是需要綁定的,也就是需要把他的地址定下來,這樣客戶端才會知道每次要和誰建立鏈接。

2.socket之listen,之前的網(wǎng)絡(luò)鏈接我們都是主動的去連接別人,如connect(),服務(wù)器是不需要連接別人的,所以他是一個被動連接,等著別人來連接他。listen就是拿來轉(zhuǎn)換的。后面的參數(shù)是參數(shù)指定隊列中最多可容納的等待接受的傳入連接數(shù)。若要確定可指定的最大連接數(shù),要參照 MaxConnections 值。也就是等著連接的最大數(shù)。

3.accept()返回參數(shù)是一個元組,前面我們就用兩個變量對他進行拆包了,第一個是一個socket對象,第二個是連接本服務(wù)器的地址。對于這個新的socket對象可以理解為服務(wù)器主socket接到連接后派遣了一個專員socket來對這個客戶端進行服務(wù)。

4.一個服務(wù)器可以被多個客戶端連接,每個客戶端都會被分配一個專員進行服務(wù)。

總結(jié):

客戶端流程:創(chuàng)建套接字(可綁定)—連接服務(wù)器—收發(fā)—關(guān)閉
服務(wù)器流程:創(chuàng)建套接字—綁定—監(jiān)聽連接—接收連接—收發(fā)—關(guān)閉

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python去掉 unicode 字符串前面的u方法

    python去掉 unicode 字符串前面的u方法

    今天小編就為大家分享一篇python去掉 unicode 字符串前面的u方法。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python?類中定義多個構(gòu)造器方法重載與泛方法

    Python?類中定義多個構(gòu)造器方法重載與泛方法

    這篇文章主要為大家介紹了Python?類中定義多個構(gòu)造器方法重載與泛方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • python3+django2開發(fā)一個簡單的人員管理系統(tǒng)過程詳解

    python3+django2開發(fā)一個簡單的人員管理系統(tǒng)過程詳解

    這篇文章主要介紹了python3+django2開發(fā)一個簡單的人員管理系統(tǒng)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • 200 行python 代碼實現(xiàn) 2048 游戲

    200 行python 代碼實現(xiàn) 2048 游戲

    2048這個小游戲大家都不陌生,應(yīng)該都玩過,之前已經(jīng)在網(wǎng)上見過各個版本的2048實現(xiàn)了,有JAVA、HTML5等,今天我就給大家來一個我200 行python 代碼實現(xiàn)的2048 游戲,感興趣的朋友一起看看吧
    2018-01-01
  • python的ArgumentParser使用及說明

    python的ArgumentParser使用及說明

    這篇文章主要介紹了python的ArgumentParser使用及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python爬取百度春節(jié)祝福語并生成心形詞云

    Python爬取百度春節(jié)祝福語并生成心形詞云

    這篇文章主要介紹了利用Python爬蟲爬取百度的春節(jié)祝福語,并將其生成心形詞云,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起試試
    2022-01-01
  • Python使用爬蟲抓取美女圖片并保存到本地的方法【測試可用】

    Python使用爬蟲抓取美女圖片并保存到本地的方法【測試可用】

    這篇文章主要介紹了Python使用爬蟲抓取美女圖片并保存到本地的方法,涉及Python基于正則、爬蟲實現(xiàn)的圖片抓取與保存相關(guān)操作技巧,需要的朋友可以參考下
    2018-08-08
  • python中with的具體用法

    python中with的具體用法

    本文主要介紹了python中with的基本使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Python實現(xiàn)圖片指定位置加圖片水?。ǜ絇yinstaller打包exe)

    Python實現(xiàn)圖片指定位置加圖片水印(附Pyinstaller打包exe)

    這篇文章主要介紹了Python實現(xiàn)圖片指定位置加圖片水印,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 解決Python中pandas讀取*.csv文件出現(xiàn)編碼問題

    解決Python中pandas讀取*.csv文件出現(xiàn)編碼問題

    很多朋友在使用Python中pandas讀取csv文件時,出現(xiàn)編碼格式問題,接下來通過本文給大家分享解決Python中pandas讀取*.csv文件出現(xiàn)編碼問題,需要的朋友可以參考下
    2019-07-07

最新評論