服务器离线时如何保持代码在客户端上运行

时间:2019-12-06 17:18:40

标签: python python-3.x networking server client

因此,我有一个服务器程序和客户端程序,这两个程序相互通信。 我的问题是,当服务器断开连接/脱机时,客户端程序立即停止运行。 我该怎么做,以便客户端程序在服务器关闭后继续运行,并每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

1 个答案:

答案 0 :(得分:0)

我找到了简单的答案。

使用try和except。就这么简单。