Итак, в основном я создал небольшую программу на Python с сокетами, которые позволяют двум клиентам подключаться через сервер для общения друг с другом.Программа работает отлично, поэтому я и мой друг решили протестировать программу на разных wi-fi.Он был в своем доме примерно в тридцати минутах от меня.Я загрузил Ngrok и набрал «ngrok.exe tcp 1234» 1234 - это порт.Это дало мне нормальный текст, и я дал мне и моему другу материал в Пересылке.Мы вставили IP и порт, Annnnnd, он не работает.Клиенты говорят, что подключен, но сервер говорит, что никто не подключен.И клиенты не работают друг с другом.Пожалуйста, помогите.
#SERVER#
#Import
from socket import *
#Variables
clientCount = 2
#Lists
clients = [[] for i in range(clientCount)]
#0 Username
clientData = [[] for i in range(clientCount)]
#Setup Socket
s = socket(AF_INET,SOCK_STREAM)
#Get IP And Port
IP = gethostbyname(gethostname())
port = 1234
#Set Up Server
s.bind((IP,port))
#Try To Locate Clients
s.listen(clientCount)
#Activates For Loop To Get Client Data
for i in range(clientCount):
#Test If A Client Has Closed
if i >= 1:
if not clients[i-1][0].recv(1024):
exit()
#Accepts Clients If It Gets Any
connection,addr = s.accept()
clients[i].append(connection)
clients[i].append(addr)
#Receives Clients Usernames
clientData[i].append(connection.recv(1024).decode("utf-8"))
#Print Clients Data
print("Received connection from '"+addr[0]+"' AKA '"+clientData[i][0]+"'")
#Sends Clients Usernames
for i in range(clientCount):
if i == 0:
clients[i][0].send(clientData[clientCount-1][0].encode("utf-8"))
print("Sent '"+clients[i][1][0]+"'s username and ID to '"+clients[clientCount-1][1][0]+"'")
else:
clients[i][0].send(clientData[i-1][0].encode("utf-8"))
print("Sent '"+clients[i][1][0]+"'s username and ID to '"+clients[i-1][1][0]+"'")
clients[i][0].send(str(i+1).encode("utf-8"))
#Game Loop
while True:
for i in range(clientCount):
#Test If A Client Has Closed
if not clients[i][0].recv(1024):
exit()
#Receive Messages
message = clients[i][0].recv(1024).decode("utf-8")
#Send Messages
if i == 0:
clients[clientCount-1][0].send(message.encode("utf-8"))
else:
clients[i-1][0].send(message.encode("utf-8"))
#CLIENT#
#Import
from socket import *
#Setup Socket
s = socket(AF_INET,SOCK_STREAM)
#Get Our IP, Server IP, And Port
ourIP = gethostbyname(gethostname())
print("Your IP address is: "+ourIP)
IP = input("Enter servers IP address: ")
port = int(input("Enter port: "))
#Ask User To Put In Username
name = input("Enter Username: ")
#Tells User That The Program Is Trying To Connect To The Server
print("Trying to connect to the server: "+IP+":"+str(port))
#Tries To Connect To Server
try:
s.connect((IP,port))
except:
print("Could not connect to server.")
print("Press Enter to close program.")
input()
exit()
print("Connected!")
#Send Username To Server
s.send(name.encode("utf-8"))
#Receive Other Clients Username
otherName = s.recv(1024).decode("utf-8")
#Receive Which Client This Program Is
clientID = s.recv(1024).decode("utf-8")
#Game Loop
while True:
#Test If The Server Has Closed
if not s.recv(1024):
exit()
#Test If Client Has A Odd Number ID
if int(clientID) % 2:
#Send Messages
s.send(input("> ").encode("utf-8"))
#Receive Messages
message = s.recv(1024).decode("utf-8")
print(otherName+": "+message)
else:
#Receive Messages
message = s.recv(1024).decode("utf-8")
print(otherName+": "+message)
#Send Messages
s.send(input("> ").encode("utf-8"))