Ich versuche, Socket-Programmierung zu implementieren und die Kommunikationsportnummer für den Server und Client für einen bestimmten Port konfigurieren möchten. Ich gebe die gleiche Portnummer sowohl auf der Client- als auch auf der Serverseite an, aber immer noch, wenn der Programmlauf eine zufällige Portnummer benötigt. Wie repariere ich die Portnummer/mache sie statisch?Socket-Programmierung Port-Hilfe Python
Server Side-Code
import socket
s=socket.socket()
port=12345
s.bind(("192.168.0.111",port))
s.listen(5)
while True:
c, addr = s.accept()
print("got connection from ",addr)
sendingMessage = "Thank you for connecting"
c.send(bytes(sendingMessage, 'UTF-8'))
data = c.recv(16)
receivedData=data.decode("utf-8","ignore")
print (receivedData)
c.close()
if receivedData=="stop":
break
Client Side-Code
import socket
port=12345
s=socket.socket()
s.connect(("192.168.43.111",port))
sendingMessage = input("Enter your message : ")
s.send(bytes(sendingMessage, 'UTF-8'))
data = s.recv(32)
receivedData=data.decode("utf-8","ignore")
print (receivedData)
s.close
Kann nicht reproduziert werden, tcp 0 0 127.0.0.1:12345 0.0.0.0:* LISTEN 25027/python – lapinkoira
So funktionieren verbindungsorientierte Sockets. Der von Ihnen angegebene Port gilt nur für die erste Verbindung. Der zweite von accept() zurückgegebene Socket wird für die Konversation verwendet und verwendet einen "zufälligen" Port. – cdarke
@cdarke Dies ist nicht korrekt. Sie erhalten einen anderen Socket mit 'accept', keinem anderen Port (auf der Serverseite). Um mehr als eine Verbindung vom Client zu akzeptieren, müsste der * Client * einen anderen Port für die Verbindung verwenden, da jedes 5-Tupel (TCP, IP1, Port1, IP2, Port2) eindeutig sein muss. –