Как искать ip хостинг сокета в python - PullRequest
0 голосов
/ 18 декабря 2018

В настоящее время я использую библиотеку сокетов в 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"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...