【问题标题】:How to create a multi-client socket in Python?如何在 Python 中创建多客户端套接字?
【发布时间】:2013-07-10 04:08:18
【问题描述】:

如何在 Python 中创建多客户端套接字?

例如,我有一个 X Ip 服务器列表,我想创建一个 X 客户端套接字:

IP_SERVERS = ['127.0.0.1', '127.0.0.2', '127.0.0.3']

没有多线程我怎么能做到这一点?

注意:

我想尝试连接到所有这些 IP_SERVERS 而无需等待第一个客户端套接字 连接到第一台服务器。

谢谢!

【问题讨论】:

  • 并行处理是线程的用途。为什么不想使用它们?

标签: python sockets connection client


【解决方案1】:
import socket
servers = [] #add servers here
class Clients:
    def __init__(self):
       self.socket = new socket() #change this to full socket init
    def connect(self, url):
       self.socket.connect(url)
    def send(self, data):
       self.socket.send(data)
    def close(self):
       self.socket.close()

for url in servers:
    client = new Clients()
    client.connect(url)
    client.send('abcd')
    client.close()

类似的东西?这也是一般代码,只是作为一个想法或示例,如果尝试运行它将无法正常工作。

线程会更好地工作,因为它不会按顺序运行并等待套接字连接和发送数据等......

【讨论】:

  • 这不好,因为您等待来自服务器的接受,直到您没有收到此接受,您才能创建另一个客户端套接字。线程不适合我的想法,因为有时您要扫描 1000 个服务器 ip,并创建 1000 个线程,这并不有效,因为我想为我的问题搜索其他解决方案。
  • 这将等待每个连接并一次打开它们。他想同时打开它们。通常这将通过线程来完成。
  • 如果你不想使用线程并且你想要并发,你会怎么做呢?
  • 但是在线程中我有问题,打开1000个线程并不好,对吧?而且我认为其他解决方案是在套接字之后打开套接字并且不等待服务器的接受前进到另一个套接字。
  • 为什么要检查1000台服务器?您必须使用线程,使用 100 个批次并在之前的线程完成时移动?
猜你喜欢
  • 2018-03-26
  • 1970-01-01
  • 1970-01-01
  • 2022-08-05
  • 2013-07-06
  • 2016-01-05
  • 1970-01-01
  • 2017-08-11
  • 1970-01-01
相关资源
最近更新 更多