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 17 Python
在Python中用split()方法分割字符串的使用介绍
May 20 Python
Python3使用requests包抓取并保存网页源码的方法
Mar 15 Python
python实现微信发送邮件关闭电脑功能
Feb 22 Python
PyQt5每天必学之工具提示功能
Apr 19 Python
Python查找最长不包含重复字符的子字符串算法示例
Feb 13 Python
解决Python3下map函数的显示问题
Dec 04 Python
Tensorflow 实现释放内存
Feb 03 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
Feb 29 Python
numpy矩阵数值太多不能全部显示的解决
May 14 Python
python开发实时可视化仪表盘的示例
May 07 Python
Python软件包安装的三种常见方法
Jul 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的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
javascript开发随笔二 动态加载js和文件
2011/11/25 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
使用jquery.upload.js实现异步上传示例代码
2014/07/29 Javascript
jQuery构造函数init参数分析
2015/05/13 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
React.Js添加与删除onScroll事件的方法详解
2017/11/03 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
2018/04/24 Javascript
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
汽车销售顾问求职自荐信
2014/01/01 职场文书
证婚人经典证婚词
2014/01/09 职场文书
公司面试感谢信
2014/02/01 职场文书
个人校本研修方案
2014/05/26 职场文书
企业百日安全活动总结
2015/05/07 职场文书
浅谈Python 中的复数问题
2021/05/19 Python
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis