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

使用Python实现一个简单的即时聊天程序

发布时间:2023-12-04 11:40:50

下面是一个使用Python实现的简单即时聊天程序的例子:

import socket
import threading

def handle_receive(sock):
    while True:
        try:
            data = sock.recv(1024).decode('utf-8')
            print(data)
        except OSError:
            break

def handle_send(sock):
    while True:
        try:
            message = input()
            sock.send(message.encode('utf-8'))
        except OSError:
            break

def start_chat_client():
    # 连接服务器
    server_ip = '127.0.0.1'
    server_port = 12345
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((server_ip, server_port))

    # 启动接收线程
    receive_thread = threading.Thread(target=handle_receive, args=(sock,))
    receive_thread.start()

    # 启动发送线程
    send_thread = threading.Thread(target=handle_send, args=(sock,))
    send_thread.start()

if __name__ == '__main__':
    start_chat_client()

以上代码实现了一个简单的客户端,可以与服务器进行即时聊天。聊天过程中,客户端可以输入信息并发送到服务器,同时接收服务器传来的消息并显示在终端。

使用这个聊天程序,需要先运行一个服务器程序。以下是一个简单的服务器示例代码:

import socket
import threading

clients = []

def handle_client(client_sock, client_addr):
    while True:
        try:
            data = client_sock.recv(1024).decode('utf-8')
            if not data:
                break
            for client in clients:
                if client != client_sock:
                    client.send(data.encode('utf-8'))
        except OSError:
            break

    clients.remove(client_sock)
    client_sock.close()

def start_chat_server():
    # 监听地址和端口
    server_ip = '127.0.0.1'
    server_port = 12345
    server_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_sock.bind((server_ip, server_port))
    server_sock.listen(5)

    while True:
        client_sock, client_addr = server_sock.accept()
        clients.append(client_sock)
        client_thread = threading.Thread(target=handle_client, args=(client_sock, client_addr))
        client_thread.start()

if __name__ == '__main__':
    start_chat_server()

使用这个服务器程序,可以与多个客户端建立连接,并且将一个客户端发来的消息广播给其他所有客户端。

使用这个聊天程序的步骤如下:

1. 首先运行服务器程序。

2. 然后运行一个或多个客户端程序。

3. 在客户端程序中输入要发送的消息并按回车键。

4. 服务器将收到该消息并将其广播给所有其他客户端。

5. 其他客户端收到消息并显示在终端。

这个简单的聊天程序只是一个基础的实现,可以根据需要进行扩展和改进,例如添加用户登录、加密通信、图形界面等功能。