私はPythonのソケットに少し問題があります。誰かが接続するたびに正常に動作しますが、接続を切断するとサーバープログラムが終了します。私は、クライアントが終了した後もサーバプログラムを開いたままにしておきたい。 whileループを使用して接続を維持しますが、クライアントが接続を閉じると、サーバーは接続を閉じます。ここでPythonソケット - ソケットを有効に保つ?
は、クライアントである:ここでは
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: ')
はサーバです:
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)
n個の接続にn + 1ソケットを使用していますか?常に聞いているソケットが1つ必要です。このリッスンソケットは、新しい接続を受け付け、接続が要求されるたびに別のソケットを開きます。 – Penang
問題を示す短いコードを投稿できますか? – SimonJ
n + 1個のソケット?私がフォローしているかわからないあなたはもう少し説明できますか? – AustinM