Python Socket geht nicht?

Lezurex  04.09.2021, 23:26

Wenn dein Client abstürzt, tut er das sicherlich auch mit einem Fehler. Bitte diesen auch noch posten.

Saibotix07 
Beitragsersteller
 05.09.2021, 18:11

Erledigt

1 Antwort

TypeError: start() takes 0 positional arguments but 1 was given

Das ist kein "Absturz", und die Fehlermeldung weist darauf hin, was du falsch gemacht hast. Es handelt sich deinem Aufruf nach um eine Objektmethode, die automatisch die jeweilige Instanz übergeben bekommt. Du hast diese aber nicht als Parameter (üblich ist "self") deklariert:

class txt_chat:
    def start():

(Auch das ist aber wieder ein Beispiel für mäßig sinnvolle Verwendung von OOP. Diese Programme gewinnen eigentlich nichts dadurch, dass sie in Klassen gesteckt werden.)


Saibotix07 
Beitragsersteller
 05.09.2021, 18:51

Davon abgesehen dass es noch lange nicht fertig ist und oop eine verwendung bekommt

Saibotix07 
Beitragsersteller
 05.09.2021, 19:07
@Saibotix07
Okay neuer Code neues Glück: 

#Server
import socket


ip_input = input("Gib deine IP an: ")
ip_input = str(ip_input)
IP_SERVER = ip_input
DISCONNECT_MESSAGE = "!DISCONNECT"


def start():
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind( (IP_SERVER, 5050) )
    print("Server gestartet")
    server.listen()
    conn, addr = server.accept()
    print(f"Client with IP {conn} connected")


    while True:
        msg = server.recv(1024)
        msg.decode("utf-8")
        print(f"Message: {msg}")


        if msg == DISCONNECT_MESSAGE:
            server.close()
            conn.close()


if __name__ == "__main__":
    start()


#Client
import socket




def start():
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.connect( ("192.168.1.100", 5050) )


    while True:
        msg = str(input("Your Message: "))
        msg = msg.encode()
        server.send(msg)


        answer = server.recv(1024)
        answer = answer.decode("utf-8")
        print(f"Antwort: {answer}")


if __name__ == "__main__":
    start()


#Error
Gib deine IP an: 192.168.1.100
Server gestartet
Client with IP <socket.socket fd=372, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.1.100', 5050), raddr=('192.168.1.100', 60324)> connected
Traceback (most recent call last):
  File "c:\Users\User\OneDrive\Python\Server_2.py", line 26, in <module>
    start()
  File "c:\Users\User\OneDrive\Python\Server_2.py", line 17, in start
    msg = server.recv(1024)
OSError: [WinError 10057] Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert, da der Socket nicht verbunden ist und (beim Senden über einen Datagrammsocket mit einem sendto-Aufruf) keine Adresse angegeben wurde