Я не могу заставить Ngrok работать с Python Sockets - PullRequest
0 голосов
/ 29 января 2019

Итак, в основном я создал небольшую программу на 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"))
...