我正在研究一个简单的python客户端和服务器,它可以在发送文件时将代码写入文件。到目前为止,我一直坚持这个错误:AttributeError:'tuple'对象没有属性'read'
这是客户的代码:
# CCSP Client
# (C) Chris Dorman - 2013 - GPLv2
import socket
import sys
# Some settings
host = raw_input('Enter the Host: ')
port = 7700
buff = 24
connectionmax = 10
# Connect to server
server = socket.socket()
server.connect((host, port))
print 'Connected!'
while True:
open_file = raw_input("File (include path): ")
fcode = open(open_file, "rb")
while True:
readcode = fcode.read(buff)
server.send(readcode)
if not fcode:
server.send("OK\n")
print "Transfer complete"
break
服务器:
# CCSP Server
# (C) Chris Dorman - 2013 - GPLv2
import socket
import sys
import string
import random
def id_generator(size=6, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for x in range(size))
host = "0.0.0.0"
port = 7700
buff = 1024
filepath = "/home/chris/"
extension = ".txt"
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((host, port))
print "Server Started"
while True:
server.listen(1)
conn = server.accept()
print 'Client' + str(conn)
print 'Generating a random file'
filename = filepath + str(id_generator()) + extension
fcode = open(filename, "wb")
while True:
if conn != 0:
code = conn.read(buff)
fcode.write(buff)
if conn == "DONE":
print 'Transfer complete'
break #EOT
任何帮助实现这一点的帮助都会很棒。我只是在服务器脚本
上遇到code = conn.read(buff)
时遇到了这个愚蠢的错误
答案 0 :(得分:2)
您应该阅读some doc。 accept()
返回一个元组而不是类似文件的对象。
答案 1 :(得分:0)
正如其他人所指出的那样,accept()
会返回一个元组。看起来你想要元组中的第一个项目,它将是一个新的套接字对象。
当然,套接字也没有read()
方法。我猜你真正想要的是:
code = conn.recv(buff)
由于recv()返回已写入套接字连接的数据。