当前位置: 首页 > news >正文

python文件传输模块_Python爱好者 socket模块传输文件 -

在python中,socket 模块为开发人员提供了底层网络接口,开发人员可以用socket模块实现底层的基本网络通信。

Socket 模块提供了 UNIX 程序员所熟悉的基本网络服务(也称为 BSD API)。这个模块中提供了在构建 socket 服务器和客户机时所需要的所有功能。

这个 API 与标准的 C API 之间的区别在于它是面向对象的。在C中,socket描述符是从socket调用中获得的,然后会作为一个参数传递给BSD API函数。在Python中,socket 方法会向应用socket方法的对象返回一个socket对象。

以下是一篇利用socket模块传输文件的代码:

客户端(发送文件):

#!/usr/bin/python

#coding=utf-8

import socket

import thread

import wx

class Sender():

def __init__(self):

self.__s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

def setIP(self,ip):

self.__ip = ip

self.__s.connect((self.__ip,9807))

def sendMsg(self,s):

self.__s.send(s)

class MyFrame(wx.Frame):

def __init__(self,parent,id):

wx.Frame.__init__(self,parent,id,'聊天室客户端',size=(200,100))#实例化窗口

self.__p = wx.TextCtrl(self,pos = (10,10),size = (100,20)) #实例化文本框

self.__f = wx.TextCtrl(self,pos = (10,30),size = (100,20)) #实例化文本框

self.__p.SetValue('127.0.0.1')

#self.__m = wx.TextCtrl(self,pos = (10,60),size = (100,300))

l = wx.Button(self,label='连接',pos = (120,10),size = (50,20))#实例化按钮

b = wx.Button(self,label='发送',pos = (120,30),size = (50,20))#实例化按钮

self.Bind(wx.EVT_BUTTON, self.OnLog, l)

self.Bind(wx.EVT_BUTTON,self.OnSend,b)#绑定事件

self.__s = Sender()

def OnLog(self,event):

self.__s.setIP(self.__p.GetValue())

def OnSend(self,event):#定义一个按钮事件

f = file(self.__f.GetValue(),'r')

self.__s.sendMsg(f.read())

f.close()

class MyApp(wx.App): #定义wx.App的子类

def OnInit(self): #

frame = MyFrame()

frame.Show()

return True

app = wx.App()

app.MainLoop()

服务器端(接收文件):

#!/usr/bin/python

#coding=utf-8

##@Author 张亚军

##@Date 2012-10-30

import socket

import time

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.bind(('127.0.0.1',9807))#监听本地端口

s.listen(3)

while True:

conn,addr = s.accept()

while True:

data = conn.recv(8192)

if not data:

break

f = file('D:\\data\\'+str(time.time())+'.txt','w')

f.write(data)

f.flush()

f.close()

print '成功'

s.close()

主要思想就是在客户端把文件读成字符串,发送到服务器端之后服务器把得到的字符串写入文件

相关文章:

  • 红曲面怎么做_曲面屏是华为手机一大败笔?确实缺点很多,但华为为何钟爱呢?...
  • 高德地图 python面试_【高德地图面试|面试题】-看准网
  • tablayout 滚动模式_scrollview+tablayout实现联动
  • cboard企业版源码_数据可视化BI平台——CBoard的部署与使用(笔记整理)
  • 生活中的算法的实际举例_生活中的算法
  • pyecharts 绘制三维散点图_pyecharts
  • toolbar文本在最右侧_Toolbar中Menu的背景颜色、位置、同时显示文字等设置(亲测)...
  • linux 使用imageio.read 读图片出来为null_经典Linux面试题
  • gifcam使用缩小内存_GifCam怎么用?GifCam使用教程
  • openkruise 缩容_Kubernetes应用管理器OpenKruise
  • arduino as5048工作原理_Arduino 真的可以用来开发产品吗?分享一个电子工程师的Arduino使用心得分享!...
  • jquery 多个文本框赋值_jquery为input赋值方法总结
  • nslookup 包含在那个包中_nslookup详解(name server lookup)( 域名查询)
  • double 去掉小数点_怎么去掉double后面的零0及取得double的小数部分的有效位 | 学步园...
  • 对一个字段赋值默认值_Java入门基础学习,成为一个Java程序员的必备知识
  • 77. Combinations
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • JS 面试题总结
  • Linux后台研发超实用命令总结
  • node入门
  • React系列之 Redux 架构模式
  • REST架构的思考
  • Vim Clutch | 面向脚踏板编程……
  • yii2权限控制rbac之rule详细讲解
  • 关于字符编码你应该知道的事情
  • 来,膜拜下android roadmap,强大的执行力
  • 排序算法之--选择排序
  • 前端之React实战:创建跨平台的项目架构
  • 如何设计一个比特币钱包服务
  • 入口文件开始,分析Vue源码实现
  • 深度学习入门:10门免费线上课程推荐
  • 使用权重正则化较少模型过拟合
  • 系统认识JavaScript正则表达式
  • 一些关于Rust在2019年的思考
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​水经微图Web1.5.0版即将上线
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • ###C语言程序设计-----C语言学习(3)#
  • ( 10 )MySQL中的外键
  • (2)MFC+openGL单文档框架glFrame
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (9)目标检测_SSD的原理
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (搬运以学习)flask 上下文的实现
  • (二)springcloud实战之config配置中心
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (论文阅读30/100)Convolutional Pose Machines
  • (三)mysql_MYSQL(三)
  • (转) 深度模型优化性能 调参
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .Net MVC + EF搭建学生管理系统