请教python大神关于传文件代码问题

我想写个类似于飞鸽传书这样的软件,由于刚起步,不准备写图形化界面,我看网上说用socket写,但是一个是服务端,一个是客户端,我觉得我的软件应该既是客户端又是服务端吧,这应该怎么写呢?是这两个写在一块儿嘛?

第1个回答  2015-12-09

代码的话,可以参考 http://lijiahao.github.io/python/2013/04/01/Python%E5%AE%9E%E7%8E%B0%E7%9A%84%E5%B1%80%E5%9F%9F%E7%BD%91%E6%96%87%E4%BB%B6%E4%BC%A0%E8%BE%93/


不过如果只是要传输文件的话,有一个简单的办法:

先在共享文件的电脑上打开 cmd 窗口,并且 cd 到要共享的文件夹

然后输入:

你的 python 安装位置/python.exe -m SimpleHTTPServer 8080

然后在要接收文件的电脑上用浏览器打开

http://共享电脑 ip:8080

就可以直接下载啦

追问

没关系,我可以修改代码成客户端自己手动输入或者选择文件,还有就是这个网页我打不开..还是多谢大神啦!对了我还顺便写了个加密和解密的程序,用的from Crypto.Cipher import AES这个模块,但是加密world或者.exe再解密后就是乱码或者不能执行了,这是为啥呢?

第2个回答  推荐于2016-02-04

#系统自带的Server.py和Client.py,实现简单的发送消息的功能,可以参考一下

import socket
HOST = '127.0.0.1'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print('Connected by', addr)
while True:
    data = conn.recv(1024)
    if not data: break
    conn.sendall(data)
conn.close()

import socket
HOST = '127.0.0.1'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.sendall(b'Hello, world')
data = s.recv(1024)
s.close()
print('Received', repr(data))

追问

那我写软件时候发送文件和接收文件的功能都要有,每个软件都能收和发,要把这两个模块写到一起么?

追答

当然不能写到一起,把他们分别放在需要的地方。
这个要根据软件需求确定的通信协议来做。

追问

哦,我的软件要边收边发文件,这个怎么实现呢?就是您的代码中的客户端和服务端如何自由的切换呢?

本回答被提问者和网友采纳

python中,如何将一个指定的文件发送到对方主机的指定端口呢(用socket方 ...
发送端# -*- coding: utf-8 -*-import Tkinterimport tkFileDialogfrom socket import *import structimport osdef client(filename): Addr=('127.0.0.1',8000) BUFSIZE=2048 Sendsocket=socket(AF_INET,SOCK_STREAM) Sendsocket.connect(Addr) FileHead=struct.pack('128s11i',fi...

python写的ftp自动上传脚本,怎么判断重复的文件不重传呢?size判断不...
办法1:改写FTP程序,加一个hash确认。以前我这么做过。在python里可以轻松做一个FTP SERVER,加上自己做的MD5检测就可以了。办法2:通过nc转发请求,在NC里设置一个检测。办法3:如果文件不大,上传完再下载下来检测 办法4:采用自己传有的流水号,重新设置FTP SERVER,让它定期根据流水号,生成检验码,...

请教python requests.post()请求一个第三方接口的问题返回中文乱码的...
需要一个转码和解码,因为文件内部编码不同,所以输出来是乱码。代码如下:txt=requests.post(url)mytxt=txt.text.encode('iso-8859-1').decode('utf-8')

求Python大神帮忙
print(helloworld)代码的时候,返回了错误(提示你第一行代码存在问题)NameErro:name'helloworld' is not defined 翻译过来的意思大概就是(命名错误:helloworld 未定义 )这个错误,你要明白一个重要的问题。在python3.x中,print是一个内置的函数(对象),所以所有的输出要像这样print()。为了便于下面...

请Python编程高手帮我解答这个问题
请参考以下代码:num = 1 while num < len(my_list):if my_list[num] in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ': # 这种方式更简洁 my_list[num]=my_list[num].lower() # 转换成小写字母 my_list.insert(num, ' ') # 在该位置插入空格 num += 2 # 跳过插入空格及该字母 else:num +=...

python代码错误求助!!!
由于牵涉到具体业务数据,提供参考如下:由报错提示看 add_edge() missing 1 required positional argument: 'v_of_edge' 判断,可能是由于调用参数错误。add_edge 的函数原型及说明如下:add_edge()函数,该函数在调用时需要传入两个参数:u 和 v,以及其它多个可选参数。代码中的错误处:

求Python大神指导,一个csv文件,我想把其中的第一列和第二列提取出来脚本...
例如:# coding:UTF-8f=open('c:\/python27\/test.csv','r')lines=f.readlines()f.close()sts=[]for line in lines:sts.append(line.split(','))print(sts)for st in sts:print st[0],st[1]

一道Python实验题,求大神帮帮忙,在线等,挺急的,谢谢了。
! \/usr\/bin\/env python encoding: utf8 try:fp = open("123.txt", "r")while True:line = fp.readline()if line:print(line, end="")else:break except Exception as e:print("open file failed. msg: {}".format(e))finally:if "fp" in locals().keys():fp.close()...

python chunk模块的用法问题
chunk模块专用于读取IFF格式的文件,你传的参数没有问题,打开应当使用二进制模式。你的文件报错估计是文件太小,读到末尾了。下面的代码可以参考:import chunkf=open('E:\\\\test.tiff','rb')print(type(f))html=chunk.Chunk(f)print(html.getname())print(html.getsize())

python 的问题,跪求大神
首先, k2y是一个1×3数组: [1, 0, 2], 可通过index获取指定位置的值, k2y[index]即获取数组k2y下标为index的值,这里index:若为整型的话就是获取第index+1位置的值, 比如k2y[1]返回的是值为数组第二个位置的值'0'; *你这里的index是一个数组k_y, 那就是把k_y的每个元素作为index...

相似回答