简体   繁体   中英

how to create a UDP server that will listen on multiple ports in python?

this is my server:

import socket

for port in range(33,128):
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    server_socket.bind(('0.0.0.0', port))
    while True:
        (client_name, client_adress) = server_socket.recvfrom(1024)
        print chr(port)
    server_socket.close()

this is my client:

import socket


message = raw_input("Enter a message: ")

for letter in message:
    my_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    while True:
        my_socket.sendto("", ('127.0.0.1', ord(letter)))
        (data, remote_adress) = my_socket.recvfrom(1024)
    my_socket.close()

print 'The server sent: ' + data

I'm not very good in python, but I think you should save your sockets to list inside for and then use select function in infinite loop outside for

import socket
import select

sockets = []

for port in range(33,128):
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    server_socket.bind(('0.0.0.0', port))
    sockets.append(server_socket)

empty = []
while True:
    readable, writable, exceptional = select.select(sockets, empty, empty)
    for s in readable:
         (client_data, client_address) = s.recvfrom(1024)
         print client_address, client_data
for s in sockets:
   s.close()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM