Я новичок в Python. Я пишу серверную программу и клиентскую программу. Здесь сервер играет роль распределения данных среди нескольких клиентов. Это прекрасно работает. Моя задача — раздать данные с сервера с помощью файла server.py. Всякий раз, когда клиенты этого хотят, он просто запускает client.py на своем ноутбуке и получает результаты. Но здесь Сервер начинает раздавать данные. IP-адрес, который использовал сервер, был 127.0.1.1. Он не принимает предоставленный сетью ip. Как заставить его использовать IP-адрес, предоставленный локальной сетью. Когда клиенты с другого компьютера запускают файл client.py. Он показывает ошибку отказа в соединении. Обратите внимание, что мы все подключены к локальной сети. Как это решить и заставить клиентов получать данные.
Вот пример кода клиента:
import socket
import os
from threading import Thread
import socket
import time
s = socket.socket()
host = '127.0.1.1'
port = 10016
print(host)
s.connect((host, port))
while True:
print(s.recv(1024))
s.close()
Пример кода сервера:
import socket
import os
from threading import Thread
import thread
import threading
import time
import datetime
def listener(client, address):
print ("Accepted connection from: ", address)
with clients_lock:
clients.add(client)
try:
while True:
client.send(a)
time.sleep(2)
finally:
with clients_lock:
clients.remove(client)
client.close()
clients = set()
clients_lock = threading.Lock()
host = socket.gethostname()
port = 10016
s = socket.socket()
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host,port))
s.listen(3)
th = []
print ("Server is listening for connections...")
while True:
client, address = s.accept()
timestamp = datetime.datetime.now().strftime("%b %d %Y,%a, %I:%M:%S %p")
a = "Hi Steven!!!" + timestamp
th.append(Thread(target=listener, args = (client,address)).start())
s.close()
0.0.0.0
на сервере. - person Klaus D.   schedule 22.03.2019127.0.1.1
вместоseocket.gethostname
? - person Fejs   schedule 22.03.2019socket.bind(("", port))
для серверной части. Обратите внимание на пустую строку для хоста. Затем для клиента вы используетеsocket.connect((host_or_ip, port))
, гдеhost_or_ip
НЕ127.0.0.1
, так как на клиентской машине127.0.0.1
будет относиться к его собственной машине. - person Justin Ezequiel   schedule 22.03.2019