Tôi muốn viết mã Python để gửi tệp từ máy khách đến máy chủ. máy chủ cần lưu tệp được gửi từ ứng dụng khách. Nhưng mã của tôi có một số lỗi mà tôi không thể sửa chữa. Dưới đây là mã máy chủ của tôi:Gửi tệp từ máy khách đến máy chủ bằng XMLRPC?
# server.py
from SimpleXMLRPCServer import SimpleXMLRPCServer
import os
server = SimpleXMLRPCServer(('localhost', 9000))
def save_data(data):
handle = open("x123.dat", "wb")
handle.write(data)
handle.close()
server.register_function(save_data, 'save_data')
server.serve_forever()
Và mã khách hàng:
# client.py
import sys, xmlrpclib
proxy = xmlrpclib.Server('http://localhost:9000')
handle = open(sys.argv[1], "rb")
proxy.save_data(handle.read())
handle.close()
Nhưng sau đó tôi chạy mã của tôi, khách hàng sẽ trả về lỗi sau (đây là trên Windows):
Traceback (most recent call last):
File "client.py", line 6, in <module> proxy.save_data(handle.read())
File "c:\python27\lib\xmlrpclib.py", line 1224, in __call__
return self.__send(self.__name, args)
File "c:\python27\lib\xmlrpclib.py", line 1575, in __request
verbose=self.__verbose
File "c:\python27\lib\xmlrpclib.py", line 1264, in request
return self.single_request(host, handler, request_body, verbose)
File "c:\python27\lib\xmlrpclib.py", line 1297, in single_request
return self.parse_response(response)
File "c:\python27\lib\xmlrpclib.py", line 1473, in parse_response
return u.close()
File "c:\python27\lib\xmlrpclib.py", line 793, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: "<class 'xml.parsers.expat.ExpatError'>:not well-formed (invalid token): line 7, column 1">
Tôi có một số câu hỏi:
Làm thế nào để sửa lỗi trên?
Mã của tôi cần phải chuyển đôi khi một số tệp lớn. Vì phương pháp của tôi rất đơn giản, tôi nghi ngờ rằng nó có hiệu quả trong việc di chuyển dữ liệu lớn. Ai có thể xin đề nghị một phương pháp tốt hơn để di chuyển các tập tin lớn? (Tất nhiên tốt hơn là sử dụng XMLRPC trên Python)