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建立连接。服务端使用多线程处理多个客户端的连接,并且能够处理断开连接的情况。客户端和服务端通过输入和输出流进行数据的读取和写入,实现实时通讯。
