socket服务器代码

import sys,os,time,_thread
from socket import * class Server(object):
def __init__(self): #用于初始化端口和IP
self.host = 'localhost'
self.port = 50001
self.server() def now(self): #返回当前时间
return time.asctime() def server_thread(self,conn): #多线程运行服务器
sockfile = conn.makefile('r')
filename = sockfile.readline()[:-1]
try: # 读取文件内容,并传输
file = open(filename, 'rb')
while True:
bytes = file.read(1024)
if not bytes: break
sent = conn.send(bytes)
assert sent == len(bytes)
except:
print('Error downloading file on server:', filename)
conn.close() def server(self): #开启线程
sock = socket(AF_INET, SOCK_STREAM)
sock.bind((self.host, self.port))
sock.listen(5)
while True:
conn, addr = sock.accept()
print('Server connect by', addr, 'at', self.now())
_thread.start_new_thread(self.server_thread, (conn,)) Server()

socket客户端代码

利用tkinter打印出界面,在界面内设置IP端口和文件,并设置提交函数

import sys,os,time,_thread
from socket import *
from tkinter import *
from tkinter.messagebox import showinfo class Client(object):
def __init__(self):
pass def now(self):
return time.asctime() def client(self,host,port,filename): #客户端运行
sock = socket(AF_INET, SOCK_STREAM)
sock.connect((host, port))
sock.send((filename + '\n').encode()) dropdir = 'New ' + os.path.split(filename)[1] # 获取文件地址,保存在默认目录下
file = open(dropdir, 'wb') # 创建本地文件
while True:
data = sock.recv(1024)
if not data: break
file.write(data) # 储存数据
sock.close()
file.close()
print('Client got ',filename, 'at', self.now()) def onSunbmit(content): #定义按钮的函数
host = content['Server'].get()
port = int(content['Port'].get())
filename = content['File'].get() Client.client(Client(),host,port,filename)
showinfo('Get-File','Download complete') def main(): #利用tkinter设置GUI界面
box = Tk()
labels = ['Server', 'Port', 'File']
rownum = 0
content = {} for label in labels:
Label(box, text=label).grid(column=0, row=rownum)
entry = Entry(box)
entry.grid(column=1, row=rownum, sticky=E + W)
content[label] = entry
rownum += 1
box.columnconfigure(0, weight=0)
box.columnconfigure(1, weight=1)
Button(text='Submit', command=lambda :onSunbmit(content)).grid(row=rownum,column=0,columnspan=2) box.title('Get——File')
box.bind('<Return>',(lambda event:onSunbmit(content)))
mainloop() main()

1.6socket服务器传送文件--gui窗口的更多相关文章

  1. windows使用putty向远程服务器传送文件

    一.问题产生 对于远程服务器,我习惯把文件写好后直接上传到服务器,也有很多方法可以做到,我现在比较习惯使用putty自带的pscp直接去传. 二.解决办法 1.首先在本地下载的putty文件下看是否有 ...

  2. 服务器备用远程-----Radmin客户端的操作指南(如何远程与传送文件)

    一台服务器的寿命一般比较长可能会从几年到几十年,就会经历各个版本的更新与升级.再经过时间的历练后,可能windwos自带的远程连接有时候会拉胯,经常报错. 这时候就需要备选方案,有钱的单位会自己搭建堡 ...

  3. 从window 的cmd窗口中下载linux 服务器上文件

    下载linux 服务器上的文件 down.php 格式为  pscp linux服务器上用户名@linux 服务器ip  文件在windows系统上的绝对路径 如果是下载服务器上的某个目录,只要在ps ...

  4. 【实操日记】使用 PyQt5 设计下载远程服务器日志文件程序

    最近通过 PyQt5 设计了一个下载服务器指定日期日志文件的程序,里面有些有意思的技术点,现在做一些分享. PyQt5 是一套 Python 绑定 Digia Qt5 应用的框架,是最强大的 GUI ...

  5. Linux SSH 远程操作与传送文件

    操作系统:centos 6.5 x64 一.远程连接:在进行linux 的 ssh远程操作前,一定要确认linux 是否安装了 openssh-clients,为了方便起见,一般用yum安装即可:# ...

  6. rsync+sersync+inotify实现服务器间文件同步之一

    rsync+sersync+inotify实现服务器间文件同步之一:rsync安装配置 2013年12月14日 ⁄ Linux管理, 服务器集群技术 ⁄ 共 4925字 ⁄ rsync+sersync ...

  7. Delphi IdTCPClient IdTCPServer 点对点传送文件

    https://blog.csdn.net/luojianfeng/article/details/53959175 2016年12月31日 23:40:15 阅读数:2295 Delphi     ...

  8. ESP8266传送文件设置和操作

    问题:ESP8266不能被识别为USB盘,也不能通过串口传送文件,只能通过wifi传送文件,需要事前在串口连接后的repl状态下,用命令行方式配置网络参数,之后才可以用wifi传送文件(webrepl ...

  9. Linux服务器间文件实时同步的实现

    使用场景 现有服务器A和服务器B,如果服务器A的指定目录(例如 /home/paul/rsync/ )中的内容发生变更(增删改和属性变更),实时将这些变更同步到服务器B的目标目录中(例如 /home/ ...

随机推荐

  1. type convert

    背景# 在开发中,我们会碰到诸如String类型转换为Int等等问题,虽然处理起来简单,但是本着DRY(Don't Repeat Yourself )原则,还是有必要封装处理下: 具体代码:Maste ...

  2. VLC播放H264文件问题

    VLC1.1.7版本默认情况下不能播放H264数据流.需要做如下设置

  3. .Net调用QQ邮箱发送邮件

    话说网上发送邮件的代码很多,但是我由于不细心,导致拿别人的代码发送邮件老是失败,今天就说说几个要注意的地方吧!!! public bool SendEmail() { MailMessage msg ...

  4. liunx进程管理之进程介绍

    关于进程 process ====================================================================================Wha ...

  5. Confluence 6 为一个空间应用一个主题

    主题允许你对 Confluence 的外表和显示进行自定义.你的 Confluence 空间管理员可以到 The Atlassian Marketplace 上下载主题. 一旦一个主题被安装到 Con ...

  6. KDD Cup 99网络入侵检测数据的分析

    看论文 该数据集是从一个模拟的美国空军局域网上采集来的 9 个星期的网络连接数据, 分成具有标识的训练数据和未加标识的测试数据.测试数据和训练数据有着不同的概率分布, 测试数据包含了一些未出现在训练数 ...

  7. 获取在线python 文档

    window cmd    :python -m pydoc -p 8888

  8. Card Game Again CodeForces - 818E (双指针)

    大意: 给定序列, 求多少个区间积被k整除. 整除信息满足单调性, 显然双指针. 具体实现只需要考虑k的素数向量, 对每一维维护个指针即可. 这题看了下cf其他人的做法, 发现可以直接暴力, 若当前的 ...

  9. consul总结

    一.介绍 内置了服务注册与发现框 架.分布一致性协议实现.健康检查.Key/Value存储.多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)服务部署简单,只有一个可运行的二进制的包.每 ...

  10. js字符串转日期兼容性

    今天遇到个bug,安卓上是好的,ios就不行.然后我就把可能用到的值都打印出来,发现日期比较一项在苹果机上就显示false,而谷歌浏览器是true.突然回忆起以前开发遇到过类似的问题,都是出在字符串转 ...