Проблема с подключением (socket python)

Пытаюсь написать автообновление программы, но появились проблемы с подключением. Проблема заключается в том что по статическому айпи, в отличии от динамического, ко мне не могут подключиться, а мне нужен именно статичный чтобы постоянно всем не скидывать свой динамический айпишник, порты открыты(открывал сам в веб-конфигураторе роутера)

Сам код(Тут только часть с сокетами потому что всё остальное нормально работает):

Server:

import socket
import threading
import os

class Parser():
    def __init__(self):
        # If Is Server Variable Not Exists
        try:
            if not self.is_server:
                # Creating Is Server Variable
                self.is_server = False

                # Creating Socket
                self.sock = socket.socket()

                # Creating Server For AutoUpdate Work
                self.create_server()
        except:
            # Creating Is Server Variable
            self.is_server = False

            # Creating Socket
            self.sock = socket.socket()

            # Creating Server For AutoUpdate Work
            self.create_server()
    
    def create_server(self):
        # Trying To Create Server
        try:
            # Connecting Server To PC Ip
            self.sock.bind(("", 25565))

            # Listening For Connections
            self.sock.listen(3)
            
        # Excepting Error
        except:
            if self.debug:
                print("\nError Happend! Retrying To Create Server..\n")
            
            # Closing Socket Connection
            self.sock.close()

            # Retrying Create Server
            self.create_server()
        
        # If Debug
        if self.debug:
            print("\nCreated Server! Starting Parser..\n")
        
        # Creating Variable To Say That We Already Created Server
        self.is_server = True

        # Creating Thread For Recieve Data
        data_recieve = threading.Thread(target=self.recieve_data, name="Data Recieve")

        # Starting Thread
        data_recieve.start()
    
    def recieve_data(self):
        while True:
            if self.is_server:
                conn, addr = self.sock.accept()
                recieved_data = conn.recv(1024)
                if recieved_data.decode("utf-8") == "REQUEST_VERSION_TYPE":
                    if self.__version__["Type"] != "Beta" and self.__version__["Type"] != "Alpha":
                        conn.sendall(str(self.__version__["Type"]).encode("utf-8"))
                    else:
                        conn.sendall("Disaccepted".encode("utf-8"))
                elif recieved_data.decode("utf-8") == "REQUEST_VERSION_VALUE":
                    if self.__version__["Type"] != "Beta" and self.__version__["Type"] != "Alpha":
                        conn.sendall(str(self.__version__["Value"]).encode("utf-8"))
                    else:
                        conn.sendall("Disaccepted".encode("utf-8"))
                elif recieved_data.decode("utf-8") == "REQUEST_UPDATE":
                    if self.__version__["Type"] != "Beta" and self.__version__["Type"] != "Alpha":
                        bytes = open("updated version/parser.py", "r+b").read()
                        conn.sendall(bytes)
                    else:
                        conn.sendall("Disaccepted".encode("utf-8"))

if __name__ == "__main__":
    Parser()

Client:

import socket
import os


class Parser():
    def __init__(self):
        # Getting Server Version
        server_version = make_request("REQUEST_VERSION_VALUE", ("", 25565)).decode("utf-8")

        # Checking For Accept And Old Version
        if server_version != "Disaccepted":
            if float(server_version) > self.__version__["Value"]:
                print("New Version Found! Updating..\n")

                # Getting Updated File
                updated_bytes = make_request("REQUEST_UPDATE", ("", 25565))

                print(updated_bytes)

                # Removing Old File
                os.remove(__file__)

                # Creating Updated File
                with open("parser.py", "w+b") as updated_file:
                    updated_file.write(updated_bytes)
                    updated_file.close()

                # Clearing Console
                os.system("cls")

                # Running Updated File
                os.system("parser.py")
            else:
                print("Already Updated!")
        else:
            print("Request Has Been Disaccepted!")

if __name__ == "__main__":
    Parser()

(Айпи в коде сам убрал, так там рабочий стоял)

Функция make_request:

def make_request(text: str, ip):
    sock = socket.socket()
    sock.connect(ip)
    sock.sendall(text.encode("utf-8"))
    recieved = sock.recv(15024)
    sock.close()
    return recieved

Как можно решить эту проблему?


Ответы (0 шт):