【编程】Python 多线程套接字

线程是一个程序里面可以独立运行的一部分程序代码。多线程程序就是有多个部分可以并发执行的程序。多线程套接字编程,就是实现在同一网络同一时段内同一个服务端程序和多个客户端进行信息沟通。

Python 的多线程套接字程序有两部分构成:

  • Python 多线程服务器程序(Server.py)
  • Python 多线程客户端程序(client.py)

多线程服务端程序 (Server.py)

import socket, threading 
class ClientThread(threading.Thread):
def __init__(self,clientAddress,clientsocket):
threading.Thread.__init__(self)
self.csocket = clientsocket
print ("增加了新客户连接: ", clientAddress)
def run(self):
print ("连接了 : ", clientAddress)
self.csocket.send(bytes("嗨..",'utf-8'))
msg = ''
while True:
data = self.csocket.recv(2048)
msg = data.decode()
if msg=='bye':
break
print ("客户消息:", msg)
self.csocket.send(bytes(msg,'UTF-8'))
print ("客户 ", clientAddress , " 已断开...")
LOCALHOST = "127.0.0.1"
PORT = 8888
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind((LOCALHOST, PORT))
print("服务已启动")
print("等待客户请求..")
while True:
server.listen(1)
clientsock, clientAddress = server.accept()
newthread = ClientThread(clientAddress, clientsock)
newthread.start()

客户端程序(client.py)

import socket 
SERVER = "127.0.0.1"
PORT = 8888
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((SERVER, PORT))
client.sendall(bytes("来自客户的消息",'UTF-8'))
while True:
in_data = client.recv(1024)
print("服务器消息 :" ,in_data.decode())
out_data = input()
client.sendall(bytes(out_data,'UTF-8'))
if out_data=='bye':
break
client.close()

运行程序

创建多线程的服务端程序 (Server.py)和客户端的程序(client.py),打开命令行窗口,先运行服务端程序,再打开新的窗口,运行客户端程序,进行服务连接,发送接收消息,可以继续打开多个窗口,运行更多的客户端程序,进行服务连接和各自独立的消息沟通。



【编程】Python 套接字
【编程】Python FTP
【编程】Python 网页
【编程】Python 访问Web
【编程】Python IP地址
【编程】Python 主机名
【编程】Python 文件目录
【编程】Python 目录操作
【编程】Python 使用Split
【编程】Python 读文件

此条目发表在人工智能, 服务器, 程序开发分类目录,贴了, , 标签。将固定链接加入收藏夹。