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备份文件的脚本
Aug 11 Python
Python中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 Python
详解Python中列表和元祖的使用方法
Apr 25 Python
利用Python抓取行政区划码的方法
Nov 28 Python
pycharm远程调试openstack代码
Nov 21 Python
Django中Forms的使用代码解析
Feb 10 Python
Python加载带有注释的Json文件实例
May 23 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
Dec 28 Python
Python日志无延迟实时写入的示例
Jul 11 Python
django多对多表的创建,级联删除及手动创建第三张表
Jul 25 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
python将logging模块封装成单独模块并实现动态切换Level方式
May 12 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 XML操作类DOMDocument
2009/12/16 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
Laravel实现表单提交
2017/05/07 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
JavaScript Function函数类型介绍
2015/04/08 Javascript
javascript实现根据3原色制作颜色选择器的方法
2015/07/17 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
Angular 作用域scope的具体使用
2017/12/11 Javascript
快速解决vue-cli不能初始化webpack模板的问题
2018/03/20 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
JS/HTML5游戏常用算法之追踪算法实例详解
2018/12/12 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
vue实现下载文件流完整前后端代码
2020/11/17 Vue.js
Vue router安装及使用方法解析
2020/12/02 Vue.js
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
[01:01:42]Secret vs Optic Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
python调用matlab的m自定义函数方法
2019/02/18 Python
python实现证件照换底功能
2019/08/20 Python
python 实现将list转成字符串,中间用空格隔开
2019/12/25 Python
Python气泡提示与标签的实现
2020/04/01 Python
用纯css3和html制作泡沫对话框实现代码
2013/03/21 HTML / CSS
《诚实与信任》教学反思
2014/04/10 职场文书
文案策划专业自荐信
2014/07/07 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
东京审判观后感
2015/06/01 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书
2016小学新学期寄语
2015/12/04 职场文书
Mysql 性能监控及调优
2021/04/06 MySQL