在Python中利用socket实现一个服务器对多个客户端进行交互,可以通过多线程技术实现。下面是一个简单的多线程web服务器代码实例:
#coding=utf-8
import socket
import threading
from time import sleep
def response(sock,addr):
print"收到请求"
data=sock.recv(1024)
print data
sock.send(html)
sock.close()
html='''
HTTP/1.1 200 OK
Content-Type: text/html
Helloworld!
'''
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('0.0.0.0',80))
s.listen(50)
print"正在等待连接……"
while 1:
sleep(0.1)
sock,addr=s.accept()
t=threading.Thread(target=response,args=(sock,addr))
t.start()
这个示例中,服务器首先创建一个socket对象,然后绑定到本地的80端口,并设置最大等待连接数为50。接着,服务器进入一个无限循环,监听新的连接请求。每当有新的客户端连接时,服务器会创建一个新的线程来处理客户端的请求,这样可以同时处理多个客户端请求,从而实现服务器与多个客户端的交互。
在响应函数中,服务器接收客户端发送的数据,并打印出来。然后,服务器将一个简单的HTML页面发送回客户端,并关闭连接。这里使用了HTTP/1.1 200 OK状态码来表示请求成功,Content-Type: text/html表示响应体是一个HTML文档。
需要注意的是,这个示例只是一个简单的实现,实际应用中还需要考虑更多的细节,例如错误处理、并发控制等。
温馨提示:答案为网友推荐,仅供参考