python使用socket实现的传输demo示例【基于TCP协议】


Posted in Python onSeptember 24, 2019

本文实例讲述了python使用socket实现的传输demo。分享给大家供大家参考,具体如下:

socket传输,客户端代码

import socket
def main():
  tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  # 服务器位于本机 9999
  tcp_client_socket.connect( ("192.168.27.72", 9999) )
  # 告诉服务器,我要下载哪一个文件
  file_name = input("请输入要下载的文件名:")
  tcp_client_socket.send(file_name.encode("utf-8"))
  temp = tcp_client_socket.recv(1024)
  print(temp)
  file_length = int(temp.decode("utf-8"))
  # 接收数据 字节
  recv_data = tcp_client_socket.recv(file_length)
  # 得到数据,需要将数据写入文件
  if recv_data:
    # f = open("new_" + file_name, "wb")
    # try:
    #   f.write(recv_data)
    # except Exception as result:
    #   print("写入文件错误")
    # finally:
    #   f.close()
    with open("new_" + file_name, "wb") as f:
      f.write(recv_data)
  tcp_client_socket.close()
if __name__ == '__main__':
  main()

服务端代码:

import socket
def main():
  #1创建套接字
  tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  #2绑定本地信息bind
  tcp_server_socket.bind(('',9999))
  #3让默认的套接字由主动变为被动listen ????
  tcp_server_socket.listen(128)
  #4等待别人的电话到来(等待客户端的链接 accept)
  new_client_socket, client_addr = tcp_server_socket.accept()
  #5调用发送文件函数,完成为客户端服务
  rece_data = new_client_socket.recv(1024)
  file_name = rece_data.decode('utf-8')
  try:
    f = open(file_name, 'rb')
    content = f.read()
    file_length = len(content)
    print(file_length)
    new_client_socket.send(str(file_length).encode('utf-8'))   #????1两个发送第二个执行快了怎么办?
    new_client_socket.send(content)
  except Exception as f:
    print('文件打开失败')
  # 6关闭套接字
  new_client_socket.close()
  tcp_server_socket.close()
if __name__ == '__main__':
  main()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
用Python操作字符串之rindex()方法的使用
May 19 Python
Python正则表达式如何进行字符串替换实例
Dec 28 Python
python模块之re正则表达式详解
Feb 03 Python
Python加密方法小结【md5,base64,sha1】
Jul 13 Python
机器学习之KNN算法原理及Python实现方法详解
Jul 09 Python
Django为窗体加上防机器人的验证码功能过程解析
Aug 14 Python
Python 继承,重写,super()调用父类方法操作示例
Sep 29 Python
Python如何基于rsa模块实现非对称加密与解密
Jan 03 Python
利用python中集合的唯一性实现去重
Feb 11 Python
Python基于爬虫实现全网搜索并下载音乐
Feb 14 Python
Python激活Anaconda环境变量的详细步骤
Jun 08 Python
Python基本知识点总结
Apr 07 Python
pymysql 开启调试模式的实现
Sep 24 #Python
django2.2安装错误最全的解决方案(小结)
Sep 24 #Python
python爬虫中多线程的使用详解
Sep 23 #Python
Django中自定义模型管理器(Manager)及方法
Sep 23 #Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
Sep 23 #Python
Python 单例设计模式用法实例分析
Sep 23 #Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
Sep 23 #Python
You might like
php读取csv实现csv文件下载功能
2013/12/18 PHP
有关于PHP中常见数据类型的汇总分享
2014/01/06 PHP
javascript网页关闭时提醒效果脚本
2008/10/22 Javascript
javascript 匿名函数的理解(透彻版)
2010/01/28 Javascript
javascript 程序库的比较(一)之DOM功能
2010/04/07 Javascript
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
原生js做的手风琴效果的导航菜单
2013/11/08 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
js中new一个对象的过程
2017/02/20 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
javascript数组去重常用方法实例分析
2017/04/11 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
javaScript中"=="和"==="的区别详解
2018/03/16 Javascript
从零搭一个自用的前端脚手架的方法步骤
2019/09/23 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
Python生成随机密码的方法
2017/06/16 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
python字符串切割:str.split()与re.split()的对比分析
2019/07/16 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
python自动点赞功能的实现思路
2020/02/26 Python
高中生自我鉴定范文
2013/10/30 职场文书
国家助学金获奖感言
2014/01/31 职场文书
建筑工地宣传标语
2014/06/18 职场文书
最新离婚协议书范本
2014/08/19 职场文书
四风问题查摆材料
2014/08/25 职场文书
怎样写离婚协议书
2014/09/10 职场文书
个人求职自荐信范文
2015/03/06 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
安全生产培训心得体会
2016/01/18 职场文书
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技