переадресация портов не работает с python-сокетами - PullRequest
0 голосов
/ 12 июня 2018

Сейчас я учусь использовать сокеты Python, и теперь я пытаюсь использовать простую программу чата, которую я создал, чтобы поговорить с одним из моих друзей.Конечно, программа не работала, потому что я не переадресовал ее.

Я перенаправил порт 21342, используя ip (ip is static), который я нашел на whatismyip.com в качестве внешнего ip, а ip, показанный какipv4 в выводе команды ipconfig в cmd в качестве внутреннего ip.

теперь, даже после пересылки, он все еще не работает.я все еще пропускаю что-то очевидное или это реальная проблема?

код:

сервер:

import socket
import threading as thread

sock = socket.socket(socket.AF_INET , socket.SOCK_STREAM)
host = ''
sock.bind((host , 21342))
sock.listen(5)
connections = []
def chat(client , address):
    global connections
    while True:
        info = client.recv(1024)
        for connection in connections:
            if connection != client:
                connection.send(info)
        if not info:
            connections.remove(client)
            client.close()
            break
try:
    while True:
        client , address = sock.accept()
        print 'new connection!'
        client_thread = thread.Thread(target = chat , args = (client , address))
        client_thread.daemon = True
        client_thread.start()
        connections.append(client)
    sock.close()
except:
    for connection in connections:
        connection.close()
    sock.close()

клиент:

import socket
import threading as thread

sock = socket.socket(socket.AF_INET , socket.SOCK_STREAM)
host = 'ip found at whatsmyip.com'
sock.connect((host , 21342))
def get_info(sock):
    while True:
        print sock.recv(1024)
get_info_thread = thread.Thread(target = get_info , args = [sock])
get_info_thread.daemon = True
get_info_thread.start()
while True:
    sock.send(raw_input())
sock.close()
...