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

Python实现一个简单的网络聊天程序

发布时间:2023-12-04 23:02:04

网络聊天程序是指通过计算机网络进行实时沟通和交流的程序。在Python中,可以使用socket模块来实现网络通信,使用多线程或异步IO来实现实时通讯。下面是一个简单的Python网络聊天程序的实现示例。

1. 服务端代码

import socket
import threading

def handle_client(client_socket, addr):
    print(f'新连接:{addr}')
    while True:
        try:
            data = client_socket.recv(1024).decode('utf-8')
            if data == 'quit':
                client_socket.close()
                print(f'连接已断开:{addr}')
                break
            else:
                print(f'收到消息:{data}')
                client_socket.sendall(f'你好,我是服务端,收到你的消息了:{data}'.encode('utf-8'))
        except:
            client_socket.close()
            print(f'连接已断开:{addr}')
            break

def start_server():
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind(('127.0.0.1', 8888))
    server_socket.listen(5)
    print('服务端已启动,等待客户端连接...')
    while True:
        client_socket, addr = server_socket.accept()
        threading.Thread(target=handle_client, args=(client_socket, addr)).start()

if __name__ == '__main__':
    start_server()

2. 客户端代码

import socket

def start_client():
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client_socket.connect(('127.0.0.1', 8888))
    print('已连接到服务端,请输入消息(输入quit退出):')
    while True:
        try:
            message = input()
            client_socket.sendall(message.encode('utf-8'))
            if message == 'quit':
                client_socket.close()
                break
            data = client_socket.recv(1024).decode('utf-8')
            print(f'收到服务端的回复:{data}')
        except:
            client_socket.close()
            break

if __name__ == '__main__':
    start_client()

运行以上代码,首先启动服务端,然后再启动一个或多个客户端。客户端输入消息后发送到服务端,服务端接收到消息后发送回复给客户端,客户端再将服务端的回复打印出来。客户端输入"quit"后,断开与服务端的连接。多个客户端可以同时与服务端进行交互。

这个简单的网络聊天程序使用了TCP协议进行通信,客户端和服务端之间通过socket建立连接。服务端使用多线程处理多个客户端的连接,并且能够处理断开连接的情况。客户端和服务端通过输入和输出流进行数据的读取和写入,实现实时通讯。