Seite 1 von 1

An .bind() Methode übergeben

Verfasst: Sonntag 23. Oktober 2022, 16:50
von abyss
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))

Re: An .bind() Methode übergeben

Verfasst: Sonntag 23. Oktober 2022, 17:17
von sparrow
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.

Re: An .bind() Methode übergeben

Verfasst: Sonntag 23. Oktober 2022, 17:32
von Sirius3
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()