【问题标题】:Asynchronous Socket异步套接字
【发布时间】:2017-03-30 21:29:00
【问题描述】:

如何连接多个客户端?与多个客户端连接后,我如何从每个客户端接收单独的数据?据我所知,我需要使用一种叫做“Asyncore”的东西。我该如何实现?

客户端类

import socket
class Client():
    def __init__(self):
        self.host = 'localhost'
        self.port = 5000

        self.s = socket.socket()
        self.s.connect((self.host, self.port))
        self.s.send(str.encode(input("What is your name ")))

x = Client()

主机类

import socket
class Host():
    def __init__(self):
        self.host = 'localhost'
        self.port = 5000

        self.s = socket.socket()
        self.s.bind((self.host, self.port))
        self.s.listen(5)
        self.c, self.addr = self.s.accept()
        print("User from " + str(self.addr) + " has connected")
        while True:
            data = self.c.recv(1024)
            if not data:
                break

            print(str(self.addr) +" name is " + data.decode("utf-8"))
            #c.send(str.encode(whatever))
        self.c.close()

x = Host()

【问题讨论】:

  • 你的意思是异步吗? docs.python.org/3/library/asyncio.html asyncore 已被 asyncio 替换 注意此模块的存在仅用于向后兼容。对于新代码,我们建议使用 asyncio。

标签: python sockets


【解决方案1】:

你在找这个吗? asyncore

这里是您可以找到与异步套接字处理程序相关的所有信息的链接

https://docs.python.org/2/library/asyncore.html

编辑:dano 评论也很棒

享受

【讨论】:

  • 是的,这就是我的意思。我已阅读文档,但似乎无法理解 asyncore 如何处理多个客户端。
  • 也许这会有所帮助:stackoverflow.com/questions/10605083/… ;)
  • 如果可以选择 Python 3,我建议使用 asyncio 而不是 asyncore。如果不是,您可以使用trollius,这是asyncio 到Python 2.x 的反向移植
  • 谢谢达诺。如果您使用了其中的一些,那么 dano 的答案就是一个好答案。我只是在尝试并找到一些信息“谷歌搜索”正确的话:P
猜你喜欢
  • 2021-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-09
  • 2011-12-05
相关资源
最近更新 更多