您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何让服务器接受来自多个端口的连接?

5b51 2022/1/14 8:21:19 python 字数 3743 阅读 496 来源 www.jb51.cc/python

如何创建一个简单的服务器(简单如接受连接并打印到终端接收的任何内容)接受来自多个端口或端口范围的连接?我是否必须使用多个线程,每个绑定调用一个.还是有其他解决方案吗?简单的服务器看起来像这样.def server(): import sys, os, socket port = 11116 host = '' backlog = 5 # Number of

概述

如何创建一个简单的服务器(简单如接受连接并打印到终端接收的任何内容)接受来自多个端口或端口范围的连接?

我是否必须使用多个线程,每个绑定调用一个.还是有其他解决方案吗?

简单的服务器看起来像这样.

def server():
import sys,os,socket

port = 11116
host = ''
backlog = 5 # Number of clients on wait.
buf_size = 1024

try:
    listening_socket = socket.socket(socket.AF_INET,socket.soCK_STREAM)
    listening_socket.setsockopt(socket.soL_SOCKET,socket.so_REUSEADDR,1) 
    listening_socket.bind((host,port)) 
    listening_socket.listen(backlog)
except socket.error,(value,message):
    if listening_socket:
        listening_socket.close()
    print 'Could not open socket: ' + message
    sys.exit(1)

while True:
    accepted_socket,adress = listening_socket.accept()

    data = accepted_socket.recv(buf_size)
    if data:
        accepted_socket.send('Hello,and goodbye.')
    accepted_socket.close()

server()

编辑:
这是一个如何完成它的例子.感谢大家.

import socket,select

def server():
import sys,socket

port_wan = 11111
port_mob = 11112
port_sat = 11113

sock_lst = []
host = ''
backlog = 5 # Number of clients on wait.
buf_size = 1024

try:
    for item in port_wan,port_mob,port_sat:
        sock_lst.append(socket.socket(socket.AF_INET,socket.soCK_STREAM))
        sock_lst[-1].setsockopt(socket.soL_SOCKET,1) 
        sock_lst[-1].bind((host,item)) 
        sock_lst[-1].listen(backlog)
except socket.error,message):
    if sock_lst[-1]:
        sock_lst[-1].close()
        sock_lst = sock_lst[:-1]
    print 'Could not open socket: ' + message
    sys.exit(1)

while True:
    read,write,error = select.select(sock_lst,[],[])

    for r in read:
        for item in sock_lst:
            if r == item:
                accepted_socket,adress = item.accept()

                print 'We have a connection with ',adress
                data = accepted_socket.recv(buf_size)
                if data:
                    print data
                    accepted_socket.send('Hello,and goodbye.')
                accepted_socket.close()

server()

这是一个python example that uses select.

总结

以上是编程之家为你收集整理的如何让服务器接受来自多个端口的连接?全部内容,希望文章能够帮你解决如何让服务器接受来自多个端口的连接?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶