An .bind() Methode übergeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
abyss
User
Beiträge: 1
Registriert: Sonntag 23. Oktober 2022, 16:46

Liebe Community ich wäre für Hilfe sehr dankbar.

Ich würde gerne zwei globale Variablen: HOST und PORT erstellen und diese an die .bind() Methode übergeben,
Ich kriege das leider aber nicht wirklich hin. Ich arbeite mit PyCharm. Was ist falsch, was muss ich ändern?

Mein Code sieht so aus:

Code: Alles auswählen

import socket


server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
def f ():
    HOST='127.0.0.1'
    PORT=1337
server_socket.bind(('HOST', PORT))
server_socket.listen(1)

while True:
    (client_socket, addr) = server_socket.accept()
    print(client_socket.recv(1024))
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Benutze keine globalen Variablen.
Auf Modulebene (also nicht eingerückt) gehören nur Importe, KONSTANTEN, die Definition von Funktionen und Klassen und die Import-Weiche um main() aufzurufen.

Zwischen Funktionsnamen und Klammern für die Parameter gehört kein Leerzeichen.

Funktionen haben einen eigenen Namensraum. Was darin definiert wird, ist außerhalb nicht sichtbar
Alles was eine Funktion braucht, wird als Parameter übergeben und geben das Ergebnis per return zurück.
Sirius3
User
Beiträge: 18278
Registriert: Sonntag 21. Oktober 2012, 17:20

So, wie Du HOST und PORT geschrieben hast, sind das nach Konvention keine Variablen, sondern Konstanten und Du definierst sie auch mit konstanten Werten. Nur das, was in Funktionen steht und was nicht, ist gerade falsch herum.

Code: Alles auswählen

import socket
HOST = "127.0.0.1"
PORT = 1337

def main():
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind((HOST, PORT))
    server_socket.listen(1)

    while True:
        (client_socket, addr) = server_socket.accept()
        print(client_socket.recv(1024))

if __name__ == "__main__":
    main()
Antworten