Python UDP套接字服务器
我用Python实现了一个UDP套接字服务器。下面是这个程序的源代码。
import socket
port_number = 116 #Checked it with various numbers
addressBar = list();
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.bind(('localhost', port_number))
print "UDPServer Waiting for client on port ",port_number
while True:
dataFromClient, address = server_socket.recvfrom(256)
if(address not in addressBar):
addressBar.append(address)
print dataFromClient
if(len(addressBar)>1):
for add in addressBar:
if(address != add ):
server_socket.sendto(dataFromClient, add)
else:
server_socket.sendto("No any connected devices", address)
print addressBar
这个服务器运行得很好。但现在我想把它变成一个在线服务器。我尝试把它放在openShift上(https://openshift.redhat.com/app/login?then=%2Fapp%2Fconsole%2Fapplications),但是没有成功。我对Python网页应用开发完全没有经验,所以我需要你们的帮助,想了解一下“如何托管这个服务器,以及应该在哪里托管?”
以下源代码展示了应用程序的客户端部分。
import socket
print "Client"
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #This creates socket
while 1:
data=raw_input("Message:")
client_socket.sendto(data, ('localhost',117))
print "Sending request"
recv_data, addr = client_socket.recvfrom(256)
print "Message<<Clent2>>",recv_data
client_socket.close()
1 个回答
3
server_socket.bind(('localhost', port_number))
# bind to all interfaces
server_socket.bind(('0.0.0.0', port_number))
这是你的问题 - 你需要绑定到所有的接口,否则只有来自同一台机器的连接才能成功。你可以这样做: