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网络编程学习笔记(六):Web客户端访问
Jun 09 Python
Python升级提示Tkinter模块找不到的解决方法
Aug 22 Python
使用python实现正则匹配检索远端FTP目录下的文件
Mar 25 Python
Python实现HTTP协议下的文件下载方法总结
Apr 20 Python
Python全局变量用法实例分析
Jul 19 Python
python数字图像处理实现直方图与均衡化
May 04 Python
python 执行终端/控制台命令的例子
Jul 12 Python
Python如何使用队列方式实现多线程爬虫
May 12 Python
解析python 类方法、对象方法、静态方法
Aug 15 Python
如何实现一个python函数装饰器(Decorator)
Oct 12 Python
python海龟绘图之画国旗实例代码
Nov 11 Python
Python就将所有的英文单词首字母变成大写
Feb 12 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 无限极分类
2008/03/27 PHP
php中mkdir函数用法实例分析
2014/11/15 PHP
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
PHP实现的sqlite数据库连接类
2014/12/12 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
全面介绍javascript实用技巧及单竖杠
2016/07/18 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
vue 实现滚动到底部翻页效果(pc端)
2019/07/31 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
python re模块findall()函数实例解析
2018/01/19 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
2019/12/25 Python
对python中各个response的使用说明
2020/03/28 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
python中使用np.delete()的实例方法
2021/02/01 Python
模具设计与制造专业应届生求职信
2013/10/18 职场文书
保安自我鉴定范文
2013/12/08 职场文书
消防先进事迹材料
2014/02/10 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
学校联谊协议书
2014/09/16 职场文书
个人授权委托书范文
2014/09/21 职场文书
教师学习群众路线心得体会
2014/11/04 职场文书
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL
JS实现九宫格拼图游戏
2022/06/28 Javascript