Ваш клиентский сокет и серверный сокет - это разные сокеты.
Вы можете получить информацию о сервере, используя объект serversocket
, так же, как вы пытаетесь self.sock
Я бы порекомендовал синтаксический анализ serversocket
в качестве 3-го аргумента в ваш client
класс, а затем использовать его внутри класса следующим образом:
class client(Thread):
def __init__(self, socket, address, server):
Thread.__init__(self)
self.sock = socket
self.addr = address
self.server = server
self.start()
def run(self):
request=''
while 1:
data=self.sock.recv(1024).decode()
if not data:
break
request+=data
print(request, self.server.getsockname()[1], self.server.getsockname()[0]))
def init_server():
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind((host, int(port)))
serversocket.listen(5)
while 1:
clients, address = serversocket.accept()
client(clients, address, serversocket)
return
Это должно вывести информацию о сервере
Если вы хотели получить информацию о клиенте, этопроанализированный в 'address' как кортеж, вы можете увидеть удаленный IP и порт сокета, используемый для связи (не открытый порт)