用Python编写一个简易的网络聊天程序
发布时间:2023-12-04 08:45:48
下面是一个使用Python编写的简易网络聊天程序的例子:
import socket
import threading
def handle_client(client_socket, addr):
while True:
try:
data = client_socket.recv(1024).decode()
if not data:
break
print("[{}] {}".format(addr, data))
response = input("Reply [{}] : ".format(addr))
client_socket.send(response.encode())
except Exception as e:
print("[ERROR] {}".format(str(e)))
break
print("[INFO] Connection closed: {}".format(addr))
client_socket.close()
def start_server():
HOST = "localhost" # 主机名
PORT = 5000 # 端口号
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((HOST, PORT))
server_socket.listen(5)
print("[INFO] Server started on {}:{}".format(HOST, PORT))
while True:
client_socket, addr = server_socket.accept()
print("[INFO] New connection from {}:{}".format(addr[0], addr[1]))
client_thread = threading.Thread(target=handle_client, args=(client_socket, addr))
client_thread.start()
def start_client():
HOST = "localhost" # 服务器主机名
PORT = 5000 # 服务器端口号
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((HOST, PORT))
print("[INFO] Connected to {}:{}".format(HOST, PORT))
while True:
try:
message = input("Send to server: ")
client_socket.send(message.encode())
response = client_socket.recv(1024).decode()
print("[Server] {}".format(response))
except Exception as e:
print("[ERROR] {}".format(str(e)))
break
client_socket.close()
if __name__ == "__main__":
mode = input("Select mode [Server/Client]: ").lower()
if mode == "server":
start_server()
elif mode == "client":
start_client()
else:
print("Invalid mode, please select 'Server' or 'Client'.")
上面的代码通过使用Python的socket模块,创建了一个简易的网络聊天程序。程序可以同时运行在服务器端和客户端。
服务器端通过start_server函数创建一个socket对象并监听连接请求。一旦有客户端连接到服务器,程序会创建一个新的线程来处理该客户端的请求。在handle_client函数中,服务器接收到客户端的消息并打印出来,然后等待用户输入回复。回复被发送给客户端,然后服务器继续等待下一条消息。
客户端通过start_client函数创建一个socket对象并连接到服务器。然后,通过用户输入发送消息给服务器,并等待服务器的回复。
你可以选择运行程序作为服务器或客户端,只需在运行时选择相应的模式。
下面是一个示例:
1. 先运行程序作为服务器:
Select mode [Server/Client]: server [INFO] Server started on localhost:5000
2. 再运行程序作为客户端:
Select mode [Server/Client]: client [INFO] Connected to localhost:5000 Send to server: Hello, how are you? [Server] Hi, I'm good. How about you? Send to server: I'm doing great! [Server] That's great to hear! Send to server: Bye! [Server] Goodbye!
上面的示例中,客户端发送了几条消息给服务器,并收到了服务器的回复。
这就是一个简单的使用Python编写的网络聊天程序。你可以根据自己的需求进行扩展和修改。
