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多线程下的变量问题
Apr 28 Python
Python中getpass模块无回显输入源码解析
Jan 11 Python
python写一个md5解密器示例
Feb 23 Python
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
Dec 05 Python
浅析Python3中的对象垃圾收集机制
Jun 06 Python
解决Python内层for循环如何break出外层的循环的问题
Jun 24 Python
Python及Pycharm安装方法图文教程
Aug 05 Python
学习Python爬虫的几点建议
Aug 05 Python
python如何提升爬虫效率
Sep 27 Python
如何使用Tkinter进行窗口的管理与设置
Jun 30 Python
Python几种酷炫的进度条的方式
Apr 11 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
全国FM电台频率大全 - 8 黑龙江省
2020/03/11 无线电
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
php数据访问之增删改查操作
2016/05/09 PHP
基于PHP制作验证码
2016/10/12 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
Dojo之路:如何利用Dojo实现Drag and Drop效果
2007/04/10 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
2014/06/09 Javascript
jQuery中:password选择器用法实例
2015/01/03 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
jquery获取transform里的值实现方法
2017/12/12 jQuery
使用Bootstrap4 + Vue2实现分页查询的示例代码
2017/12/21 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
html-webpack-plugin修改页面的title的方法
2020/06/18 Javascript
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
2020/08/20 NodeJs
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
2019/06/13 Python
python计算导数并绘图的实例
2020/02/29 Python
python判断正负数方式
2020/06/03 Python
意大利咖啡、浓缩咖啡和浓缩咖啡机:illy caffe
2019/03/20 全球购物
伦敦著名的运动鞋综合商店:Footpatrol
2019/03/25 全球购物
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
初一地理教学反思
2014/01/16 职场文书
电气个人求职信范文
2014/02/04 职场文书
授权委托书公证
2014/09/14 职场文书
自主招生自荐信格式范文
2015/03/25 职场文书
2015年乡镇工会工作总结
2015/05/19 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js