欢迎访问宙启技术站
智能推送

使用Python的Client()创建多线程网络通信程序

发布时间:2023-12-28 05:25:55

在Python中,可以使用socket模块来创建客户端程序来进行网络通信。然而,使用多个线程来进行网络通信可以提高程序的并发性能。

下面给出一个使用Python多线程的网络通信客户端程序的例子:

import socket
import threading

# 定义服务器的主机和端口号
HOST = 'localhost'
PORT = 12345


def send_message(client_socket:socket.socket):
    while True:
        # 获取用户输入
        message = input("请输入要发送的消息: ")

        # 发送消息到服务器
        client_socket.send(message.encode())


def receive_message(client_socket:socket.socket):
    while True:
        # 接收服务器的消息
        data = client_socket.recv(1024).decode()

        # 如果接收到的消息为空,则表示服务器已关闭
        if not data:
            break

        # 打印接收到的消息
        print("接收到的消息: ", data)


def main():
    # 创建客户端套接字
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 连接到服务器
    client_socket.connect((HOST, PORT))

    # 创建两个线程来分别发送和接收消息
    send_thread = threading.Thread(target=send_message, args=(client_socket,))
    receive_thread = threading.Thread(target=receive_message, args=(client_socket,))

    # 启动线程
    send_thread.start()
    receive_thread.start()

    # 等待线程结束
    send_thread.join()
    receive_thread.join()

    # 关闭客户端套接字
    client_socket.close()


if __name__ == '__main__':
    main()

上述代码创建了一个多线程的客户端程序,在用户输入发送的消息后,将消息发送给服务器,并接收服务器的响应消息。

首先定义了服务器的主机和端口号,然后定义了两个函数send_message()receive_message(),用于分别发送和接收消息。

main()函数中,创建了客户端套接字并连接到服务器。然后,创建了两个线程来分别发送和接收消息。send_thread线程调用send_message()函数来发送用户输入的消息,receive_thread线程调用receive_message()函数来接收服务器的响应消息。

最后,启动线程,并等待线程结束。当两个线程都结束后,关闭客户端套接字。

这样我们就创建了一个多线程的网络通信客户端程序。