我使用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)中托管它。但它没有成功。我有0个python web应用程序开发经验,所以我需要你的帮助来获得一个想法回合"如何托管这个服务器以及在哪里托管?"
以下源代码显示了应用程序的客户端。
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()
答案 0 :(得分:3)
server_socket.bind(('localhost', port_number))
这是您的问题 - 您需要绑定到所有接口,否则只有来自同一台计算机的连接才能成功。这样做:
# bind to all interfaces
server_socket.bind(('0.0.0.0', port_number))