Python UDP套接字服务器

2 投票
1 回答
2479 浏览
提问于 2025-04-18 10:43

我用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))  

这是你的问题 - 你需要绑定到所有的接口,否则只有来自同一台机器的连接才能成功。你可以这样做:

撰写回答