最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python使用tcp實(shí)現(xiàn)局域網(wǎng)內(nèi)文件傳輸

 更新時(shí)間:2020年03月20日 14:29:33   作者:WangF0  
這篇文章主要介紹了python使用tcp實(shí)現(xiàn)局域網(wǎng)內(nèi)文件傳輸,文件包括文本,圖片,視頻等,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文為大家分享了python使用tcp實(shí)現(xiàn)局域網(wǎng)內(nèi)文件傳輸?shù)木唧w代碼,供大家參考,具體內(nèi)容如下

功能:

可以利用python創(chuàng)建的TCP客戶端從我們自己搭建的TCP服務(wù)器上下載文件。

實(shí)現(xiàn)需求:

安裝socket模塊
簡(jiǎn)單了解sokcet模塊用法

服務(wù)器代碼如下:

import socket

def file_deal(file_name):
 # 定義函數(shù)用于處理用戶索要下載的文件
 try:
 # 二進(jìn)制方式讀取
 files = open(file_name, "rb")

 mes = files.read()

 except:


 print("沒(méi)有該文件")

 else:

 files.close()

 return mes

def main():
 # 創(chuàng)建套接字
 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 # 固定端口號(hào)
 tcp_socket.bind(("",8888))
 # 將主動(dòng)套接字轉(zhuǎn)為被動(dòng)套接字
 tcp_socket.listen(128)

 while True:
 # 利用accept獲取分套接字以及客戶端的地址
 client_socket,client_addr = tcp_socket.accept()
 # 接收客戶端的數(shù)據(jù)
 file_name = client_socket.recv(4096)
 # 調(diào)用函數(shù)處理用戶下載的文件
 mes = file_deal(file_name)

 if mes:
  # 如果文件不為空發(fā)送

  client_socket.send(mes)
 #關(guān)閉分套接字

 client_socket.close()

if __name__ == "__main__":
 main()

import socket


def file_deal(file_name):
 # 定義函數(shù)用于處理用戶索要下載的文件
 try:
 # 二進(jìn)制方式讀取
 files = open(file_name, "rb")

 mes = files.read()

 except:


 print("沒(méi)有該文件")

 else:

 files.close()

 return mes

def main():
 # 創(chuàng)建套接字
 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 # 固定端口號(hào)
 tcp_socket.bind(("",8888))
 # 將主動(dòng)套接字轉(zhuǎn)為被動(dòng)套接字
 tcp_socket.listen(128)

 while True:
 # 利用accept獲取分套接字以及客戶端的地址
 client_socket,client_addr = tcp_socket.accept()
 # 接收客戶端的數(shù)據(jù)
 file_name = client_socket.recv(4096)
 # 調(diào)用函數(shù)處理用戶下載的文件
 mes = file_deal(file_name)

 if mes:
  # 如果文件不為空發(fā)送

  client_socket.send(mes)
 #關(guān)閉分套接字

 client_socket.close()


if __name__ == "__main__":
 main()

客戶端代碼:

from socket import *
import os

def main():
 # 建立套接字
 tcp_socket = socket(AF_INET, SOCK_STREAM)
 # 接收用輸入的服務(wù)器端的ip和端口
 tcp_ip = input("請(qǐng)輸入ip:")

 tcp_port = int(input("請(qǐng)輸入端口:"))
 # 連接服務(wù)器
 tcp_socket.connect((tcp_ip, tcp_port))
 # 輸入要下載的文件名
 file_name = input("請(qǐng)輸入要下載的文件名:")

 # 將文件名發(fā)送至服務(wù)器端
 tcp_socket.send(file_name.encode())
 # 創(chuàng)建一個(gè)空文件
 new_file = open(file_name, "wb")
 # 用與計(jì)算讀取的字節(jié)數(shù)
 time = 0

 while True:
 # 接收服務(wù)器端返回的內(nèi)容
 mes = tcp_socket.recv(4096)
 # 如果內(nèi)容不為空?qǐng)?zhí)行
 if mes:
  # 解碼并向文件內(nèi)寫(xiě)入
  new_file.write(mes.decode())

  # 計(jì)算字節(jié)
  time += len(mes)

 else:
  # 如果字節(jié)數(shù)為空即未收到內(nèi)容
  if time == 0:
  # 關(guān)閉文件
  new_file.close()
  # 刪除剛剛創(chuàng)建的文件
  os.remove(file_name)
  print("沒(méi)有您要下載的文件")
  else:
  # 如過(guò)time有值時(shí)name文件傳輸完成
  print("文件下載成功")

  break
 # 關(guān)閉套接字
 tcp_socket.close()


if __name__ == '__main__':
main()

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • pytorch在fintune時(shí)將sequential中的層輸出方法,以vgg為例

    pytorch在fintune時(shí)將sequential中的層輸出方法,以vgg為例

    今天小編就為大家分享一篇pytorch在fintune時(shí)將sequential中的層輸出方法,以vgg為例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • urllib和BeautifulSoup爬取維基百科的詞條簡(jiǎn)單實(shí)例

    urllib和BeautifulSoup爬取維基百科的詞條簡(jiǎn)單實(shí)例

    這篇文章主要介紹了urllib和BeautifulSoup爬取維基百科的詞條簡(jiǎn)單實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Flask框架學(xué)習(xí)筆記之使用Flask實(shí)現(xiàn)表單開(kāi)發(fā)詳解

    Flask框架學(xué)習(xí)筆記之使用Flask實(shí)現(xiàn)表單開(kāi)發(fā)詳解

    這篇文章主要介紹了Flask框架學(xué)習(xí)筆記之使用Flask實(shí)現(xiàn)表單開(kāi)發(fā),結(jié)合實(shí)例形式較為詳細(xì)的分析了flask框架表單模板定義、數(shù)據(jù)提交等相關(guān)操作技巧,需要的朋友可以參考下
    2019-08-08
  • python隊(duì)列queue模塊詳解

    python隊(duì)列queue模塊詳解

    這篇文章主要為大家詳細(xì)介紹了python隊(duì)列queue模塊的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • python線程、進(jìn)程和協(xié)程詳解

    python線程、進(jìn)程和協(xié)程詳解

    Python被人詬病最多的大概就是性能差,在這里講一下 Python 的多進(jìn)程,多線程與協(xié)程。首先聲明這不是教程,看完這篇文章,大概能夠?qū)?Python 的多進(jìn)程與多線程有一定的了解。
    2016-07-07
  • Python基礎(chǔ)詳解之列表復(fù)制

    Python基礎(chǔ)詳解之列表復(fù)制

    這篇文章主要介紹了Python基礎(chǔ)詳解之列表復(fù)制,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python基礎(chǔ)的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • 通過(guò)python檢測(cè)字符串的字母

    通過(guò)python檢測(cè)字符串的字母

    這篇文章主要介紹了通過(guò)python檢測(cè)字符串的字母,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python連接es之es更新操作示例詳解

    Python連接es之es更新操作示例詳解

    這篇文章主要為大家介紹了Python連接es之es更新操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Python 讀寫(xiě) Matlab Mat 格式數(shù)據(jù)的操作

    Python 讀寫(xiě) Matlab Mat 格式數(shù)據(jù)的操作

    這篇文章主要介紹了Python 讀寫(xiě) Matlab Mat 格式數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05
  • python 元組和列表的區(qū)別

    python 元組和列表的區(qū)別

    這篇文章主要介紹了python 元組和列表的區(qū)別,幫助大家更好的理解和學(xué)習(xí)python 數(shù)據(jù)類型的相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-11-11

最新評(píng)論

杭锦后旗| 文登市| 蚌埠市| 高淳县| 濮阳市| 昂仁县| 朝阳区| 永登县| 谢通门县| 石河子市| 阿勒泰市| 庆阳市| 闻喜县| 怀柔区| 自贡市| 横山县| 什邡市| 同江市| 林芝县| 汶上县| 墨竹工卡县| 宝兴县| 壶关县| 涟源市| 保德县| 安岳县| 江源县| 台湾省| 新乐市| 文化| 海淀区| 潼关县| 昭通市| 肥西县| 德昌县| 临漳县| 正阳县| 古田县| 渭源县| 馆陶县| 图们市|