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实现多线程下载文件的代码实例
Jun 01 Python
python里大整数相乘相关技巧指南
Sep 12 Python
python清除字符串里非字母字符的方法
Jul 02 Python
Windows下Python使用Pandas模块操作Excel文件的教程
May 31 Python
Python实现的读取电脑硬件信息功能示例
May 30 Python
对python 通过ssh访问数据库的实例详解
Feb 19 Python
python使用 zip 同时迭代多个序列示例
Jul 06 Python
使用python实现飞机大战游戏
Mar 23 Python
详解python with 上下文管理器
Sep 02 Python
详解Django中异步任务之django-celery
Nov 05 Python
python给list排序的简单方法
Dec 10 Python
Python 把两层列表展开平铺成一层(5种实现方式)
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数组删除元素示例
2014/03/21 PHP
php实现产品加入购物车功能(1)
2020/07/23 PHP
PHP耦合设计模式实例分析
2018/08/08 PHP
PHP 构造函数和析构函数原理与用法分析
2020/04/21 PHP
简单实用的js调试logger组件实现代码
2010/11/20 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
基于jquery封装的一个js分页
2011/11/15 Javascript
js 浏览器事件介绍
2012/03/30 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
使用jQuery插件创建常规模态窗口登陆效果
2013/08/23 Javascript
js function定义函数的几种不错方法
2014/02/27 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
2017/06/06 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
js截取字符串功能的实现方法
2017/09/27 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
2019/04/09 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
[01:34]2016国际邀请赛中国区预选赛IG战队教练采访
2016/06/27 DOTA
基于python二叉树的构造和打印例子
2019/08/09 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
Python接口测试get请求过程详解
2020/02/28 Python
Django中的AutoField字段使用
2020/05/18 Python
POS解决方案:MUNBYN(热敏打印机、条形码扫描仪)
2020/06/09 全球购物
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
应用艺术专业个人的自我评价
2014/01/03 职场文书
业务部门经理岗位职责
2014/02/23 职场文书
餐厅总厨求职信
2014/03/04 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书
法院答辩状格式
2015/05/22 职场文书
教师节主题班会方案
2015/08/17 职场文书
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL