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中的内置函数getattr()介绍及示例
Jul 20 Python
在Python的Django框架下使用django-tagging的教程
May 30 Python
Python 实现一个颜色色值转换的小工具
Dec 06 Python
Python实现购物车功能的方法分析
Nov 10 Python
Python3中类、模块、错误与异常、文件的简易教程
Nov 20 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
May 28 Python
基于Python列表解析(列表推导式)
Jun 23 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
django框架用户权限中的session缓存到redis中的方法
Aug 06 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
Aug 07 Python
基于python代码批量处理图片resize
Jun 04 Python
python中mongodb包操作数据库
Apr 19 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模板页面中分页代码的解析
2009/02/06 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
php简单实现单态设计模式的方法分析
2017/07/28 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
jquery仿苹果的时间/日期选择效果
2017/03/08 Javascript
vue-router实现webApp切换页面动画效果代码
2017/05/25 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
原生JavaScript实现随机点名表
2021/01/14 Javascript
从Python程序中访问Java类的简单示例
2015/04/20 Python
Python中关于使用模块的基础知识
2015/05/24 Python
python类中super()和__init__()的区别
2016/10/18 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
python opencv实现切变换 不裁减图片
2018/07/26 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
Python中的引用知识点总结
2019/05/20 Python
使用APScheduler3.0.1 实现定时任务的方法
2019/07/22 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
详解Python利用configparser对配置文件进行读写操作
2020/11/03 Python
python re的findall和finditer的区别详解
2020/11/15 Python
python中doctest库实例用法
2020/12/31 Python
pytorch __init__、forward与__call__的用法小结
2021/02/27 Python
css3之UI元素状态伪类选择器实例演示
2017/08/11 HTML / CSS
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
苹果中国官方网站:Apple中国
2016/07/22 全球购物
阿联酋航空假期:Emirates Holidays
2018/03/20 全球购物
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
高中的自我鉴定
2013/12/16 职场文书
三八节标语
2014/06/27 职场文书
小学生放飞梦想演讲稿
2014/08/26 职场文书
2015年119消防宣传日活动总结
2015/03/24 职场文书
硕士论文致谢范文
2015/05/14 职场文书
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
2021/06/09 Python
idea以任意顺序debug多线程程序的具体用法
2021/08/30 Java/Android