В настоящее время я использую библиотеку сокетов в python для отправки основного текста с одного компьютера на другой в одной и той же локальной сети.
Моя проблема заключается в том, что из-за того, что я несколько раз использовал разные компьютеры, iPv4, которыйклиент подключается к изменениям каждый раз.
Строка 4 кода клиента: client.connect(("172.16.0.34",8888))
Это создает трудности, поскольку я не могу очень легко изменить ip в коде клиента.
Мой вопрос:
Возможно ли, что клиент может "просканировать" сеть, чтобы увидеть, на каком ip-сервере размещен сокет, и получить этот ip для подключения к ним, что позволяет мнеиспользовать какой-либо компьютер и он все еще работает?
Вот мой код:
Клиент:
import socket
client = socket.socket()
try:
client.connect(("172.16.0.34",8888))
except:
print("Server not connected")
else:
print("Connect to server: ","localhost")
while True:
print("[Waiting for response...]")
print(client.recv(1024))
valid = False
while not valid:
try:
msg = str(input("Enter your message to send: "))
except:
print("Invalid input format")
else:
valid = True
to_send = msg.encode("UTF-8")
client.send(to_send)
Сервер:
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("Socket created")
host = "0.0.0.0"
port = 8888
print(host)
try:
server.bind((host,port))
except:
print("Bind failed")
else:
print("Bind successful")
server.listen(5)
clientsocket = None
while True:
if clientsocket == None:
print("[Waiting for connection..]")
(clientsocket, address) = server.accept()
print("Client accepted from", address)
else:
print("[Waiting for response...]")
print(clientsocket.recv(1024))
valid = False
while not valid:
try:
msg = str(input("Enter your message to send: "))
except:
print("Invalid input format")
else:
valid = True
clientsocket.send(msg.encode("UTF-8"))