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算法学习之基数排序实例
Dec 18 Python
Python实现的简单发送邮件脚本分享
Nov 07 Python
python列表操作之extend和append的区别实例分析
Jul 28 Python
python制作一个桌面便签软件
Aug 09 Python
使用python批量化音乐文件格式转换的实例
Jan 09 Python
Python TestCase中的断言方法介绍
May 02 Python
Python 合并多个TXT文件并统计词频的实现
Aug 23 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
Python Websocket服务端通信的使用示例
Feb 25 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
Feb 29 Python
对python中各个response的使用说明
Mar 28 Python
python 实现逻辑回归
Dec 30 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
FormValid0.5版本发布,带ajax自定义验证例子
2007/08/17 Javascript
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
JavaScript 产生不重复的随机数三种实现思路
2012/12/13 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
JS实现简单短信验证码界面
2017/08/07 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
vue拖拽排序插件vuedraggable使用方法详解
2020/08/21 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
nodejs同步调用获取mysql数据时遇到的大坑
2019/03/02 NodeJs
详解jQuery-each()方法
2019/03/13 jQuery
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
JS手写一个自定义Promise操作示例
2020/03/16 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
Linux下为不同版本python安装第三方库
2016/08/31 Python
python+opencv实现动态物体识别
2018/01/09 Python
python三方库之requests的快速上手
2019/03/04 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
在Python中使用turtle绘制多个同心圆示例
2019/11/23 Python
如何在mac环境中用python处理protobuf
2019/12/25 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
思想汇报格式
2014/01/05 职场文书
晚会邀请函范文
2014/01/24 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
源码解读Spring-Integration执行过程
2021/06/11 Java/Android