Tôi đang gặp một chút rắc rối với ổ cắm trong Python. Bất cứ khi nào ai đó kết nối nó hoạt động tốt nhưng nếu họ ngắt kết nối chương trình máy chủ đóng lại. Tôi muốn chương trình máy chủ vẫn mở sau khi khách hàng đóng. Tôi đang sử dụng một vòng lặp True trong khi vẫn giữ kết nối còn sống nhưng khi máy khách đóng kết nối, máy chủ sẽ đóng kết nối của nó.Ổ cắm Python - giữ ổ cắm còn sống?
Đây là khách hàng:
import socket, sys
conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = sys.argv[1]
port = int(sys.argv[2])
conn.connect((host, port))
print("Connected to host " + sys.argv[1])
td = 1
while td == 1:
msg = raw_input('MSG: ')
Đây là máy chủ:
import socket, sys
socket.setdefaulttimeout(150)
host = ''
port = 50005
socksize = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
print("Server started on port: %s" % port)
s.listen(1)
print("Now listening...\n")
conn, addr = s.accept()
while True:
print 'New connection from %s:%d' % (addr[0], addr[1])
data = conn.recv(socksize)
if not data:
break
elif data == 'killsrv':
conn.close()
sys.exit()
else:
print(data)
Bạn đang sử dụng n + 1 ổ cắm cho n kết nối? Bạn cần một ổ cắm đang lắng nghe mọi lúc. Ổ cắm nghe này chấp nhận các kết nối mới và mở ổ cắm khác mỗi lần kết nối được yêu cầu – Penang
Bạn có thể đăng một đoạn mã ngắn để chứng minh sự cố không? – SimonJ
n + 1 ổ cắm? Không chắc tôi có theo dõi không. Bạn có thể giải thích thêm một chút không? – AustinM