2015-04-05 3 views
0

Я написал базовые сценарии сервера-клиента, используя сокеты, и все работает отлично в моей локальной сети, но оно не работает, когда я пытаюсь подключиться к клиенту, который не находится в моей локальной сети. Я также порт пересылается эти портыPython Socket не в локальной сети

это сервер

###SERVER#### 


def ChatConnection(): 
    print('Waiting for a connection...\n') 
    SOCKET = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    SOCKET.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
    HOST = '' 
    PORT = 8989 
    SOCKET.bind((HOST, PORT)) 
    SOCKET.listen(1) 
    CONN, ADDR = SOCKET.accept() 
    print('You can now chat') 
    while True: 
     MSG = str(input('\n[YOU]> ')) 
     while not MSG: MSG = str(input('\n[YOU]> ')) 
     CONN.send(MSG.encode()) 
     print('\nAwaiting reply...') 
     REPLY = CONN.recv(4096).decode() 
CONN.close() 

это клиент

###CLIENT### 



def ChatConnection(): 
    print('Waiting for a connection...\n') 
    while True: 
     try: 
      HOST = SERVER EXTERNAL IP 
      PORT = 8989 
      SOCKET = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
      SOCKET.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
      SOCKET.connect((HOST, PORT)) 
      print('You can now chat with server') 
      print('\nWaiting for server...') 
      while True: 
       REPLY = SOCKET.recv(4096) 
       print('\n[USER]> %s'%REPLY.decode()) 
       MSG = str(input('\n[YOU]> ')) 
       while not MSG: MSG = str(input('\n[YOU]> ')) 
       SOCKET.send(MSG.encode()) 
       print('\nAwaiting reply...') 
      SOCKET.close() 
    except Exception: pass 

то, что мне нужно сделать, так это будет работать в глобальной сети?

+0

Вы отправили вперед на ** обе ** стороны? – hamsolo474

+0

thats имеет такой смысл. я не могу просить кого-то переместить вперед, есть много способов общаться без порта. как насчет всех этих онлайн-чатов? – PieThon

ответ

0

Убедитесь, что порт переадресован РАБОТАЕТ, чтобы проверить запуск этой программы и попробовать запустить сканирование портов на вашем общедоступном IP-адресе.
Port scanning tool

  • Попробуйте изменить HOST к 0.0.0.0.
  • Если это не сработало, перейдите в CMD и напишите netstat -a во время работы вашего скрипта.
    Поиск порта, который вы слушаете, и убедитесь, что IP-адрес 0.0.0.0.
  • Если IP-адрес 0.0.0.0, попробуйте отключить брандмауэр.
Смежные вопросы