Python Socket funktioniert nicht.

JMan2000

Cadet 4th Year
Registriert
Mai 2020
Beiträge
103
Hallo zusammen,
ich habe ein Problem in Python, und zwar mit der Socketlibery. Ich habe mehrere Dinge ausprobiert, und es läuft immer wieder darauf hinaus, dass keine Verbindung zu stande kommt. Ich bekomme immer wieder ein
Code:
ConnectionRefusedError: [WinError 10061] Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte
, wenn ich versuche es über den Localhost laufen zu lassen, und ein
Code:
TimeoutError: [WinError 10060] Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat
wenn ich es versuch über mein Server im localen Netzwerk laufen lasse. Die Fehler die ich bekomme sind immer die Selben, egal ob das Serverprogramm läuft oder nicht. Ich habe die Firewall deaktiviert(Client und Server). Ich habe verschiedene Programme (selbstgeschrieben und aus dem Internet) ausprobiert, und keins funktioniert. Alle werfen den selben Fehler. Ich nutze momentan leider gezwungener maßen einen Windows Laptop.
 
code wäre vermutlich hilfreich, kommst du mit telnet drauf? netstat -aon zeigt offene ports wenn dein Server läuft?
 
Ich könnte mir vorstellen, dass es unter Windows Adminrechte braucht um einen Socket aufzumachen. Bin mir nicht sicher, aber ich halte es zumindest für wahrscheinlich.
 
Danke für die Tips. Ich habe jetzt mal versucht mit telnet eine Verbindung zum Server aufzubauen, und auch da ist die Verbindung gescheitert. Die anderen Ports funktionieren aber. Hier ist ein Codebeispiel, ähnlich dem Tutorial (Code in der Videobeschreibung verlinkt):
.
Python:
import socket
import os
import time
import threading
import signal


signal.signal(signal.SIGINT, signal.SIG_DFL)

HEADER = 64
PORT = 5050
SERVER = socket.gethostbyname(socket.gethostname()) #an der Stelle habe ich statdessen auch die IP probiert
ADDR = (SERVER, PORT)
FORMAT = 'utf-8'
DISCONNECT_MESSAGE = ["!DISCONNECT"]
TIME = "[" + time.ctime() + "]"

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(ADDR)

def handle_client(conn, addr):
    print(TIME, f"[NEW CONNECTION] {addr} connected.")

    connected = True
    while connected:
        if msg_length:
            msg_length = conn.recv(HEADER).decode(FORMAT)
            msg_length = int(msg_length)
            msg = conn.recv(msg_length).decode(FORMAT)
            print(TIME + f"[{addr}] {msg}")
            if msg == DISCONNECT_MESSAGE:
                connected = False

    conn.close()
    print(TIME, f"[DISCONNECTION] {addr} disconnected.")


def start():
    server.listen()
    print(TIME, f"[LISTENING] Server is listening on port {PORT}.")
    while True:
        print(1)    # letzte ausgabe auf der serverkonsole, danach keine reaktion mehr.
        conn, addr = server.accept()
        print(2)
        thread = threading.Thread(target=handle_client(conn, addr))
        thread.start()
        print(TIME + f"[ACTIVE CONNECTIONS] server is starting {threading.active_count() - 1}")


print(TIME + "[STARTING] server is starting")
start()
 
lass dir SERVER ausgeben und versuche, dich auf diese ip zu verbinden (socket.gethostbyname(socket.gethostname()) liefert bei mir die externe ip). wenn SERVER in leerer string ist (SERVER = "") dann lauscht das programm auf allen interfaces.

danach bekommst du probleme in handle_client, aber das darfst du selbst machen :)
 
Ok danke. Jetzt raff ich garnix mehr. Ich hab das grade noch mal ausprobiert, was du gesagt hast, und es scheint erstmal zu funktionieren. Allerdings dachte ich, dass ich das gestern auch schon mal probiert habe, aber mit einfachen ''. Da hat es nicht funktioniert. Habe es jetzt wieder mit '' probiert und es funktioniert. Hat mir aber ein gutes Stück weitergeholfen. Danke.
Ergänzung ()

Fuck my Life. Ich hatte vergessen, dass ich eine Firewall auf meinem Server hatte. Ich war mir absolut sicher das ich das nicht hatte, da ich vor ein paar Wochen mit ufw rumgeärgert hatte und sie abgeschaltet hatte.(habe ich anscheinen doch nicht getan🤦‍♂️) Deswegen hat das gestern mit den '' nicht funktioniert. F
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: razzy
Zurück
Oben