0

Pythonで単純なtcp_serverを使用しています。コードは次のとおりです。

import socket

TCP_IP = '127.0.0.1'
TCP_PORT = 5005
BUFFER_SIZE = 1024

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)

conn, addr = s.accept()
#inputs = [conn, serial_obj]
outputs = []
#read_input.read_input(inputs,outputs)
while 1:
    data = conn.recv(BUFFER_SIZE)
    if not data: break
    print "received data:", data
    conn.send(data)

conn.close()

私の質問は、データを受信すると接続が切断され、tcp_server プログラムを再実行して接続を開始する必要があるということです。どうすれば永遠に聴き続けることができますか。

4

1 に答える 1

1

ネストされた 2 つの while ループが必要です。外側のループは、着信接続ごとに 1 回、永久に実行されます。内側のループは、現在の接続で受信したデータに従って実行されます。これを試して:

import socket

TCP_IP = '127.0.0.1'
TCP_PORT = 5005
BUFFER_SIZE = 1024

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)

while True:
    conn, addr = s.accept()
    #inputs = [conn, serial_obj]
    outputs = []
    #read_input.read_input(inputs,outputs)
    while 1:
        data = conn.recv(BUFFER_SIZE)
        if not data: break
        print "received data:", data
        conn.send(data)
    conn.close()
于 2014-07-27T04:51:56.023 に答える