【发布时间】:2014-06-23 02:50:28
【问题描述】:
我使用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 web 应用程序开发方面有 0 经验,所以我需要你的帮助来了解“如何托管这个服务器以及在哪里托管?”
以下源代码显示了应用程序的客户端。
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()
【问题讨论】:
-
首先显而易见的是,您需要检查您使用的 UDP 端口是否在托管服务器上打开。很可能是防火墙。
-
Opps 感谢您的建议,我不这样做......但是当我尝试启动服务器时,它说“没有模块调用套接字”。所以我认为这不是问题。 Open shift 支持 python 2.7 和 3.0,这里我使用的是 2.7。由于“socket”是python中的内置模块,这不可能发生。
-
那么这是他们对他们使用的版本的支持以及为什么他们没有套接字模块的问题,该模块应该在 2.7 的标准库中:/usr/lib/python2.7/socket .py - 这就是我在 Linux 上所拥有的。
-
有时可能是程序有问题。但是有些原因是它不起作用,有没有我可以尝试使用的免费 python 主机
-
试用 AWS 的免费套餐 - aws.amazon.com/free/…