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 urlopen()函数 示例分享
Jun 12 Python
在Python的循环体中使用else语句的方法
Mar 30 Python
解析Python中的变量、引用、拷贝和作用域的问题
Apr 07 Python
python访问系统环境变量的方法
Apr 29 Python
python删除过期文件的方法
May 29 Python
Python简单计算数组元素平均值的方法示例
Dec 26 Python
python的pytest框架之命令行参数详解(上)
Jun 27 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
Aug 31 Python
python 多进程并行编程 ProcessPoolExecutor的实现
Oct 11 Python
Python面向对象之私有属性和私有方法应用案例分析
Dec 31 Python
Python基于gevent实现高并发代码实例
May 15 Python
简单的命令查看安装的python版本号
Aug 28 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获取用户IPv4或IPv6地址的代码
2012/11/15 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
Extjs 几个方法的讨论
2010/01/28 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
javascript闭包的理解和实例
2010/08/12 Javascript
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
2015/03/04 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
学习JavaScript设计模式之装饰者模式
2016/01/19 Javascript
Javascript中apply、call、bind的巧妙使用
2016/08/18 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
wx-charts 微信小程序图表插件的具体使用
2019/08/18 Javascript
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
python DataFrame 修改列的顺序实例
2018/04/10 Python
python实现彩票系统
2020/06/28 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
Django组件content-type使用方法详解
2019/07/19 Python
基于keras中的回调函数用法说明
2020/06/17 Python
python下载的库包存放路径
2020/07/27 Python
python不同版本的_new_不同点总结
2020/12/09 Python
英国家电直销:Appliances Direct
2016/09/22 全球购物
英国精品买手店:Browns Fashion
2016/09/29 全球购物
巴西手表购物网站:eclock
2019/03/19 全球购物
zooplus意大利:在线宠物商店
2019/08/07 全球购物
关于工资低的辞职信
2014/01/14 职场文书
少先队入队活动方案
2014/02/08 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
Python合并多张图片成PDF
2021/06/09 Python
MySQL中varchar和char类型的区别
2021/11/17 MySQL
通过Python把学姐照片做成拼图游戏
2022/02/15 Python