Tôi đang cố viết chương trình truyền tệp bằng cách sử dụng ổ cắm. Máy chủ kết thúc mã đang chạy tốt. Tuy nhiên, ở phía khách hàng tôi nhận được lỗi sauPython socket.error: [Errno 111] Kết nối bị từ chối
Traceback (most recent call last):
File "client.py", line 54, in <module>
uploadFiles(directory)
File "client.py", line 36, in uploadFiles
transferFile(fname)
File "client.py", line 13, in transferFile
cs.connect((HOST, 36258))
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 111] Connection refused
Mã của tôi là như sau
import os
import socket
def transferFile(fname):
HOST = '127.0.0.1'
CPORT = 36258
MPORT = 36250
FILE = fname
cs = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
cs.connect((HOST, 36258))
cs.send("SEND " + FILE)
cs.close()
ms = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ms.connect((HOST, MPORT))
f = open(FILE, "rb")
data = f.read()
f.close()
ms.send(data)
ms.close()
def uploadFiles(directory):
home = os.getenv("HOME")
folder = str(home + "/" + directory)
os.chdir(folder)
dirList = os.listdir(folder)
print dirList
for fname in dirList:
if fname.endswith('.bin'):
transferFile(fname)
os.chdir(os.getenv("HOME"))
directory = "testdownload"
if not os.path.exists(directory):
os.makedirs(directory)
os.chdir(directory)
uploadFiles(directory)
tôi đã cố gắng tìm kiếm sự giúp đỡ trên Google và các bài viết khác trên Stack Overflow, không ai trong số họ giúp đỡ. Ai đó có thể vui lòng giúp tôi? Số dòng có thể khác vì tôi chỉ dán một phần mã số
Làm thế nào để bạn biết rằng máy chủ kết thúc đang làm việc? Thông báo lỗi cho thấy kết nối TCP tới 127.0.0.1:36258 đang bị từ chối. Điều gì sẽ xảy ra khi bạn chạy 'telnet 127.0.0.1 36258'? –
Tôi chạy 'telnet 127.0.0.1 36258' và có thể thấy kết nối. 'Cố gắng 127.0.0.1 ... ' ' Kết nối với 127.0.0.1.' 'Escape nhân vật là '^]'.' Tôi đã kiểm tra cuối máy chủ và phát hiện ra rằng có một vấn đề với ổ cắm không mở lên đồng bộ với phía máy khách Cảm ơn – hld619
Để thêm vào nhận xét ở trên, tôi đã thêm trễ 2 giây sau 'cs.close()' và sau 'ms.close()' để đồng bộ hóa với các kết nối trên máy chủ kết thúc và nó hoạt động như một sự quyến rũ. Cảm ơn tc – hld619