ironPython - python 套接字文件传输,类型错误
ironPython - python socket file transfer, typeError
我正在尝试将二进制文件从在 ironPython 2.7.4 上运行的客户端发送到在 linuxbox 上的 cpython 2.7.6 上运行的服务器。我遵循了 this 示例,但是当服务器开始写入文件时(第一次调用 f.write
),我得到一个错误:
TypeError: must be string or buffer, not int
这里是我认为相关的代码片段。
服务器:
def recvall(self, count):
msgparts = []
while count > 0:
newbuf = self.conn.recv(count)
if not newbuf: return None
msgparts.append(newbuf)
count -= len(newbuf)
#print "%i bytes left" % count
return "".join(msgparts)
#receive file, write out
f = open(fname, 'wb')
chunk = self.recvall(1024)
while (chunk):
f.write(1024) #<-- error happens here.
chunk = self.recvall(1024)
f.close()
客户端:
f = open(fname, 'rb')
chunk = f.read(1024)
while (chunk):
self.conn.send(chunk)
chunk = f.read(1024)
f.close()
conn
是套接字连接 - 这有效,我可以成功传输 pickled dicts。
有什么提示吗?
感谢和问候,
多米尼克
f.write(chunk)
应该这样做(而不是 f.write(1024)
。
如错误消息所述,f.write
需要一个字符串参数,而 1024 显然是一个 int
我正在尝试将二进制文件从在 ironPython 2.7.4 上运行的客户端发送到在 linuxbox 上的 cpython 2.7.6 上运行的服务器。我遵循了 this 示例,但是当服务器开始写入文件时(第一次调用 f.write
),我得到一个错误:
TypeError: must be string or buffer, not int
这里是我认为相关的代码片段。
服务器:
def recvall(self, count):
msgparts = []
while count > 0:
newbuf = self.conn.recv(count)
if not newbuf: return None
msgparts.append(newbuf)
count -= len(newbuf)
#print "%i bytes left" % count
return "".join(msgparts)
#receive file, write out
f = open(fname, 'wb')
chunk = self.recvall(1024)
while (chunk):
f.write(1024) #<-- error happens here.
chunk = self.recvall(1024)
f.close()
客户端:
f = open(fname, 'rb')
chunk = f.read(1024)
while (chunk):
self.conn.send(chunk)
chunk = f.read(1024)
f.close()
conn
是套接字连接 - 这有效,我可以成功传输 pickled dicts。
有什么提示吗?
感谢和问候, 多米尼克
f.write(chunk)
应该这样做(而不是 f.write(1024)
。
如错误消息所述,f.write
需要一个字符串参数,而 1024 显然是一个 int