因此,我有一个服务器程序和客户端程序,这两个程序相互通信。 我的问题是,当服务器断开连接/脱机时,客户端程序立即停止运行。 我该怎么做,以便客户端程序在服务器关闭后继续运行,并每20秒尝试尝试连接一次,可以说这样,当服务器重新联机时会重新连接。编辑:我忘了提我知道如何重新连接的主要问题是使代码保持运行,而不是在套接字断开连接时停止。我也知道整个代码都可以工作。如果我关闭服务器程序的终端,那么客户端程序也会停止。
要重新连接的部分客户端代码:
import socket
import os
import sys
import subprocess
import time
from time import sleep
s = socket.socket()
host = '192.168.2.16'
port = 9999
connected = False
while connected == False:
try:
s.connect((host,port))
connected = True
except socket.error:
sleep(5)
部分服务器代码:
import socket
import sys
import os
import threading
import time
from queue import Queue
NUMBER_OF_THREADS = 2
JOB_NUMBER = [1,2]
queue = Queue()
all_connections = []
all_adresses = []
def socket_create():
try:
global s
global host
global port
host = '0.0.0.0'
port = 9999
s = socket.socket()
except socket.error as msg:
print("Error: " + str(msg))
def socket_bind():
try:
global host
global s
global port
print("Binding Socket To Port " + str(port))
s.bind((host, port))
s.listen(5)
except socket.error as msg:
print("Socket Binding Error: " + str(msg) + '/n' + "Trying Again...")
socket_bind()
def accept_connections():
for c in all_connections:
c.close()
del all_connections[:]
del all_adresses[:]
while 1:
try:
conn, address = s.accept()
conn.setblocking(1)
all_connections.append(conn)
all_adresses.append(address)
print("\nConnection has been established: " + address[0])
except:
print("Error accepting connections")
和错误:
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
答案 0 :(得分:0)
我找到了简单的答案。
使用try和except。就这么简单。