Python 套接字服务器或带线程的套接字

标签 python multithreading sockets server connection

我是模块套接字的新手,我正在学习如何实现它。我目前已经编写了这个基本服务器。

import socket               

s = socket.socket()         
host = "Some IP" 
port = 12345                
s.bind((host, port))        

print "Setting up server on", host + ":" + str(port)

s.listen(5)                 

while True:
    c, addr = s.accept()     

    print 'Got connection from', addr
    c.send('Thank you for connecting.')
    print c.recv(1024)

c.close() 

但是,我意识到该服务器一次只能处理一个客户端。为了进一步加强我的培训,我想同时处理多个客户。所以我进行了研究并发现了SocketServer库。我还听说过对常规套接字模块进行线程化的方法,因此每个新连接都会创建一个新线程。我找到的信息还不够。请帮助我理解我发现的这两种方法之间的区别以及在哪里使用哪一种。

提前致谢。

最佳答案

套接字库非常底层,您确实必须自己实现大多数事情。

SocketServer 更高级。它在内部使用套接字库,并提供了一个简单的接口(interface),允许您一次处理多个客户端,并且您不必担心使用套接字所涉及的整个低级内容。

查看此处的示例并将它们与您自己的代码进行比较。您可能会看到差异。 https://docs.python.org/2/library/socketserver.html#examples

关于Python 套接字服务器或带线程的套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37689518/

相关文章:

python - 使用\r 在 Linux 上不工作覆盖 Python 中的前一行

java - 垃圾收集和异步调用/ future 对象

python - Kivy 和 Python 线程——如何在它们之间获取数据

java - Thread.Interrupt() 在 Android 中没有按预期工作?

java - 从 Android 设备通过 Wifi 访问打印机

python - mmap 多个文件 block 和缓存 mmap 对象 (Python)

python - discord.py 中的 client.wait_for 中的“检查未定义”

sockets - 为什么不能将mmap与套接字fd一起使用?

c - 客户端被杀死或崩溃时内核发送的 TCP RST

python - 如何在 pandas 数据透视表中聚合仅超过 1 个的组