你好,我有一个类型错误的问题,我不能摆脱。 我已经建立了一个名为过程a.py还有一个客户过程b.py 我启动服务器调用processA,它就启动了 我启动客户端调用processB,它就启动了 现在我输入要通过套接字发送的文件的名称。 图像必须与程序位于同一文件夹中。 您可以使用下面的示例代码来再现错误。你知道吗
我选择:李娜.jpg你知道吗
我在我的第15行有个错误过程a.py地址:
sock.send("EXISTS" + str(os.path.getsize(filenameByte))) TypeError: a bytes-like object is required, not 'str'
你知道吗过程a.py ''' 创建于2017年11月29日
@author: Poor Student
'''
import numpy
import socket
import threading
import os
def RtrFile(name, sock):
filenameByte = sock.recv(1024)
filenameStr = filenameByte.decode('ascii')
if os.path.isfile(filenameStr):
sock.send("EXISTS" + str(os.path.getsize(filenameByte)))
userResponse = sock.recv(1024)
if userResponse[:2] == 'OK':
with open(filenameByte, 'rb') as f:
bytesToSend = f.read(1024)
sock.send(bytesToSend)
while bytesToSend != "":
bytesToSend = f.read(1024)
sock.send(bytesToSend)
else:
sock.send("ERR")
sock.close()
def Main():
host = "127.0.0.1"
port = 5000
s = socket.socket()
s.bind((host,port))
s.listen(5)
print("server started.")
while True:
c, addr =s.accept()
print("client connected ip:< " + str(addr) +">")
t = threading.Thread(target = RtrFile, args=("rtrThread",c))
t.start()
s.close()
if __name__ == "__main__":
Main()
你知道吗过程b.py你知道吗
'''
Created on 29 Nov 2017
@author: Poor Student
'''
import socket
def Main():
host = "127.0.0.1"
port = 5000
s = socket.socket()
s.connect((host,port))
filename = input("Filename? -> ")
if filename != "q":
s.send(filename.encode())
data = s.recv(1024)
if data[:6] == "EXISTS":
filesize = int(data[6:])
message = input("File Exists, " +str(filesize) + "Bytes, download? (Y/N)? ->")
if message == "Y" or message =="y":
s.send("OK")
f = open("new_" + filename, "wb")
data = s.recv(1024)
totalRecv = len(data)
f.write(data)
while totalRecv < filesize:
data = s.recv(1024)
totalRecv += len(data)
f.write(data)
print("(0:.f)".format((totalRecv)/float(filesize))*100 +"done")
print("Download Complete")
else:
print("File does not exists")#
s.close()
if __name__ == "__main__":
Main()
我找到了答案。在Python3中,在发送字符串时,您总是可以将字符串转换为字节字符串。发送到接收器后,你必须再次解码它们,这必须为孔通信完成,这就是为什么错误总是出现在同一个模块中。你知道吗
你知道吗过程b.py你知道吗
相关问题 更多 >
编程相关推荐