Python函数来检查是否还活着

标签 python python-3.x server python-server-pages

我正在运行 2 个 python 脚本:一个服务器脚本和一个连接到服务器的客户端(均为 Windows 10)。

例如,如果由于客户端系统重启而导致连接丢失,并且 python 脚本在启动时自动运行,我该如何重新连接?因为当我不重新启动服务器时,客户端重新启动时出现错误。

有没有人知道检查客户端脚本是否仍在运行的函数或技巧(这样我就可以远程重启服务器)?或者甚至更好的东西,如果客户端系统重新启动,则不会让服务器出现连接错误。

显示:简单的 python 聊天室

服务器

import time, socket, sys
 
new_socket = socket.socket()
host_name = socket.gethostname()
s_ip = socket.gethostbyname(host_name)
 
port = 8080
 
new_socket.bind((host_name, port))
print( "Binding successful!”)
print("This is your IP: ", s_ip)
 
name = input('Enter name: ')
 
new_socket.listen(1) 
 
 
conn, add = new_socket.accept()
 
print("Received connection from ", add[0])
print('Connection Established. Connected From: ',add[0])
 
client = (conn.recv(1024)).decode()
print(client + ' has connected.')
 
conn.send(name.encode())
while True:
    message = input('Me : ')
    conn.send(message.encode())
    message = conn.recv(1024)
    message = message.decode()
    print(client, ':', message)

客户

import time, socket, sys
 
socket_server = socket.socket()
server_host = socket.gethostname()
ip = socket.gethostbyname(server_host)
sport = 8080
 
print('This is your IP address: ',ip)
server_host = input('Enter friend\'s IP address:')
name = input('Enter Friend\'s name: ')
 
 
socket_server.connect((server_host, sport))
 
socket_server.send(name.encode())
server_name = socket_server.recv(1024)
server_name = server_name.decode()
 
print(server_name,' has joined...')
while True:
    message = (socket_server.recv(1024)).decode()
    print(server_name, ":", message)
    message = input("Me : ")
    socket_server.send(message.encode())

最佳答案

您必须创建一个多线程服务器。在多线程服务器中,为每个客户端创建一个新的独立线程(与主线程分离)。

因此,当您的客户端停止时,服务器仅完成客户端的线程,而主线程继续运行,等待新客户端。

在网络中有很多多线程服务器的例子。下面是几个例子:

关于Python函数来检查是否还活着,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67153085/

相关文章:

java - 基本 Netty 演示无法同时处理 TCP 和 UDP 套接字

java - java 服务器的无响应 GUI

python - Python 的 multiprocessing.Pool 是否支持远程子进程?

python - 无法从网页的不同深度抓取相似的链接

python - 在 python 中实现 fprintf 的简单方法是什么?

python - 从 Python 列表中获取前 n 个唯一元素

Java 客户端服务器应用程序 - 地址已在使用 : connect

python - 我必须从给定的 Dataframe : 中获取 "True"值多于 "False"值的组

python - 使用 BlackMagic 卡使用 Opencv 捕获帧(强度穿梭)

python - 如何绘制渐变色线?