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爬虫利用cookie实现模拟登陆实例详解
Jan 12 Python
python编程测试电脑开启最大线程数实例代码
Feb 09 Python
Python smtplib实现发送邮件功能
May 22 Python
python实现单链表中删除倒数第K个节点的方法
Sep 28 Python
Python 调用 Outlook 发送邮件过程解析
Aug 08 Python
Python求正态分布曲线下面积实例
Nov 20 Python
利用Python的sympy包求解一元三次方程示例
Nov 22 Python
python重要函数eval多种用法解析
Jan 14 Python
Python3读取和写入excel表格数据的示例代码
Jun 09 Python
Python源码解析之List
May 21 Python
Python爬取英雄联盟MSI直播间弹幕并生成词云图
Jun 01 Python
一起来学习Python的元组和列表
Mar 13 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
javaScript 计算两个日期的天数相差(示例代码)
2013/12/27 Javascript
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
js自调用匿名函数的三种写法(推荐)
2016/08/19 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
Node.js Express 框架 POST方法详解
2017/01/23 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
2019/02/10 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
详解关于React-Router4.0跳转不置顶解决方案
2019/05/10 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
开发中常用的25个JavaScript单行代码(小结)
2019/06/28 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
vue transition 在子组件中失效的解决
2019/11/12 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
JS猜数字游戏实例讲解
2020/06/30 Javascript
VUE动态生成word的实现
2020/07/26 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
Django的session中对于用户验证的支持
2015/07/23 Python
python实现稀疏矩阵示例代码
2017/06/09 Python
在windows下Python打印彩色字体的方法
2018/05/15 Python
python绘制多个曲线的折线图
2020/03/23 Python
jupyter notebook 重装教程
2020/04/16 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
浅谈keras.callbacks设置模型保存策略
2020/06/18 Python
Java如何调用外部Exe程序
2015/07/04 面试题
信息部岗位职责
2013/11/12 职场文书
年度考核评语
2014/01/19 职场文书
考博专家推荐信
2014/05/10 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
MySQL 数据丢失排查案例
2021/05/08 MySQL