複数のポート (例: TCP:1234、TCP:5678 など) で実行できる Python ネットワーク アプリケーションを作成したいと考えています。
したがって、それぞれがクライアント接続をリッスンするn個のソケットがあるとしましょう。さまざまなポートをリッスンする単純なネットワーク アプリケーションをプログラムしましたが、アプリケーションを実行すると、最初のソケット プロセスのリッスン フェーズで停止します。
N個のポートをリッスンし、それぞれがクライアントが接続するのを待っているときに、単一のpythonプログラムを作成するにはどうすればよいですか。すべてのソケットが同時に実行され、リッスンしています。
Socket/Process #1: Listening on TCP Port 5000
Socket/Process #2: Listening on TCP Port 5001
Socket/Process #3: Listening on TCP Port 5002
...
Socket/Process #N: Listening on TCP Port 6000
どんなアイデアでも大歓迎です。
#!/usr/bin/env python
import socket
def getPortList():
ports=[]
nPort=int(raw_input("# how many ports you want? "))
j = 0
for i in range(0,nPort):
ports.append(int(raw_input("Enter port number: ")))
j+=1
return ports
def myTCPSocket(port=5000):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
s.bind(("", int(port)))
print ("\nWaiting for connections!\n")
s.listen(5)
(clientsock, clientaddr) = s.accept()
print(clientaddr)
data = "start"
while len(data):
clientsock.send("\nWelcome to Echo Server\n")
data = clientsock.recv(1024)
print ("Data sent is: ", data)
clientsock.send(data)
if data == "exit\r\n":
clientsock.close()
plst = getPortList()
for item in plst:
myTCPSocket(item)