Python: socket - Laufenden Server und Client vom gleichen PC

Hy, ich habe das gerade weitergeleitet, meine ports und mein Python-Server <---> Client-chat funktioniert wie erwartet beim ausführen des client von einem anderen PC.

Wenn ich versuche, schließen Sie den client aus meinem eigenen PC (wo liegt die Datei-server selbst), dann bekomme ich seine Fehler:

OSError: [WinError 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted

Q1: Dies bedeutet, dass nur 1 app kann die Verbindung zu einem bestimmten port, richtig?

Q2: Wie kann ich mich entwickeln, mein Server und mein Client auf dem gleichen PC dann?
(Ich habe keinen anderen PC um es zu tun)

Wenn nötig, hier ist mein code. (ich habe gerade angefangen, also NICHT BEURTEILEN)

SERVER:

from tkinter import *
#from mysql.connector import (connection)
import socket
from _thread import *

import sys
root = Tk()
T = Text(root, height=2, width=30)
T2 = Text(root, height=2, width=30)
B = Button(root, text="Send")
T.pack(side=LEFT,fill=X)
T2.pack(side=TOP,fill=X)
B.pack(side=LEFT,fill=X)




#statick ip
host = 'x.x.x.x'
port=yyyy
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((host,port))

try:
    s.bind((host,port))
except socket.error as e:
    print(str(e))

s.listen(5)
print("waiting for connection")
def threaded_client(conn):
    conn.send(str.encode("Connection with the server established\n"))

while True:
    data = conn.recv(2048)
    reply = "You: " + data.decode('utf-8')
    if not data:
        break
    conn.sendall(str.encode(reply))
conn.close()

while True:
    conn, addr = s.accept()
    print('connected to: '+ addr[0]+':'+str(addr[1]))
    start_new_thread(threaded_client,(conn,))
root.mainloop()

CLIENT:

from tkinter import *
import socket

print("everything is imported")

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print("socket is established")
#the public ip
host = 'y.y.y.y'
port=xxxx
s.connect((host,port))

print("s.connect done")

def sendShit(event):
    textToSend = T.get("1.0",END)
    s.send(str.encode(textToSend))
    T2.insert(END, s.recv(1024))

print("sendshit defined")

root = Tk()
T = Text(root, height=2, width=30)
T2 = Text(root, height=2, width=30)
B = Button(root, text="Send")
T.pack(side=LEFT,fill=X)
T2.pack(side=TOP,fill=X)
B.pack(side=LEFT,fill=X)
T.insert(END, "Type here")
T2.insert(END, s.recv(1024))
B.bind("<Button-1>",sendShit)
mainloop()
  • Setzen Sie einfach beide Dateien host = '127.0.0.1'(das ist Ihre localhost - und set - port um die gleiche Anzahl (zum Beispiel 6000)
  • Danke, es funktioniert jetzt
  • Habe ich geschrieben als Antwort...Bitte betrachten Sie es akzeptieren, wenn Sie sehen, es hat dir geholfen. Dank
Schreibe einen Kommentar