Python Socket Programmierung?
Moin Moin,
ich hab grad einen socket chat programmiert. soweit funktioniert auch alles aber ich bekomme immer diesen einen Error. Vielleicht hat wer von euch eine Idee was ich hier falsch gemacht habe.
Server Code:
import socket
import threading
HEADER = 64
PORT = 5050
SERVER = socket.gethostbyname(socket.gethostname())
ADDR = (SERVER, PORT)
FORMAT = 'utf-8'
DISCONNECT_MESSAGE = "!DISCONNECT"
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(ADDR)
def handle_client(conn, addr):
print(f"[NEW CONNECTION] {addr} connected.")
connected = True
while connected:
msg_length = conn.recv(HEADER).decode(FORMAT)
if msg_length:
msg_length = int(msg_length)
msg = conn.recv(msg_length).decode(FORMAT)
if msg == DISCONNECT_MESSAGE:
connected = False
print(f"[{addr}] {msg}")
conn.send("Msg received".encode(FORMAT))
conn.close()
def start():
server.listen()
print(f"[LISTENING] Server is listening on {SERVER}")
while True:
conn, addr = server.accept()
thread = threading.Thread(target=handle_client, args=(conn, addr))
thread.start()
print(f"[ACTIVE CONNECTIONS] {threading.activeCount() - 1}")
print("[STARTING] server is starting...")
start()
# Und hier der Client Code:
import socket
HEADER = 64
PORT = 5050
FORMAT = "utf-8"
DISCONNECT_MESSAGE = "!DISCONNECT"
SERVER = "192.168.1.14"
ADRR = (SERVER, PORT)
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(ADRR)
def send(msg):
message = msg.encode(FORMAT)
msg_length = len(message)
send_length = str(msg_length).encode(FORMAT)
send_length += b' ' * (HEADER - len(send_length))
client.send(send_length)
client.send(message)
print(client.recv(2048).decode(FORMAT))
while True:
input = input("Deine Nachricht: ")
send(input)
#Der Error:
Name Error: name "hallo" is not defined
1 Antwort
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer, Technik, programmieren
while True:
input = input("Deine Nachricht: ")
send(input)
Hier liegt das Problem, Du weist dem NAmen Input die Rückgabe eines Input zu. D.h. unter dem Name input ist nach dem ersten Aufruf der String der eingegeben wurde zu finden udn nicht mehr die input()-Funktion.
KarlRanseierIII
01.09.2021, 20:59
@Saibotix07
Dann solltest Du mal die Fehlermeldung vollständig bei der Frage anhängen.
@KarlRanseierIII
Okay auf windows funktioniert es jz :) komisch.
Auch mit einem anderen Namen kommt der selbe error ;(