我想创建一个可以在多个端口(例如: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)