Python Socket соединяет два устройства в одной сети - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь подключить простой сервер и клиент с двух компьютеров в одной сети. И клиент, и сервер не могут «найти» друг друга, поскольку они не проходят мимо .connect() и .accept() соответственно. Что я делаю не так?

(Windows 10)

Сервер:

import socket

HOST = socket.gethostname()    #Returns: "WASS104983"
#I have also tried socket.gethostbyname(socket.gethostname)), returning: "25.38.252.147"
PORT = 50007

sock = socket.socket()
sock.bind((HOST, PORT))
sock.listen(5)

print("Awaiting connection... ")

(clnt, addr) = sock.accept()

print("Client connected")
…

и клиент:

import socket

HOST = "WASS104983"    #Or "25.38.252.147", depending on the servers setup
PORT = 50007

sock = socket.socket()

print("Attempting connection... ")

sock.connect((HOST, PORT))

print("Connected")
…

Я заставил это работать раньше, поэтому я не уверен, почему это не сейчас.

Я знаю, что есть несколько вопросов такого калибра, но ни один, кажется, не покрывает мою проблему.

Кроме того, расширитель Wi-Fi не должен мешать локальной передаче, не так ли?

1 Ответ

0 голосов
/ 22 марта 2019

Я всегда видел настройку серверов таким образом:

import socket
import threading

bind_ip = '0.0.0.0'
bind_port = 9999

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((bind_ip, bind_port))
server.listen(5)

print("[*] Listening on {}:{}".format(bind_ip, bind_port))


def handle_client(client_socket):
    request = client_socket.recv(1024)
    print('received: {}'.format(request))
    client_socket.send(b'ACK!')
    client_socket.close()


while True:
    client, addr = server.accept()
    print("[*] Accepted connection from: {}:{}".format(addr[0], addr[1]))
    client_handler = threading.Thread(target=handle_client, args=(client,))
    client_handler.start()*

Где я думаю, что важным отличием от вашего поста может быть то, что сервер, принимающий соединения, находится в бесконечном цикле.Вы пробовали это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...