Python SOCK_STREAM через интернет

У меня есть простые программы для сокета клиента и сервера не работает через Интернет

# Echo server program
import socket
import ImageGrab

HOST = ''                 # Symbolic name meaning all available interfaces
PORT = 3000              # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
data = conn.recv(1024)
print data
conn.close()


# Echo client program
import socket
import ImageGrab
#destnation ip
HOST = '127.0.0.1'    # The remote host
PORT = 3000              # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send('Hello rushikesh')
s.close()
print 'Received'#, repr(data)

Когда мы пытаемся заставить его работать через Интернет, он не может подключиться. Программа показана, как указано выше, единственное, что IP-адрес назначения заменяет IP-адрес моих друзей.

При работе через localhost он работает отлично, но не работает через интернет...

Я написал программу, используя SOCK_DGRAM он работает через Интернет только для небольших порций данных. Я хочу передать изображение, используя его, поэтому я написал его с помощью SOCK_STREAM для передачи изображения, которое успешно работает на локальном хосте и не работает через Интернет. Так что я написал простейшую программу, но все еще показывая ту же проблему

Может кто-нибудь, пожалуйста, проведите меня через это...

1 ответ

Решение

У вас правильный подход, но вы, вероятно, сталкиваетесь с проблемами сети или брандмауэра. В зависимости от конфигурации сети вашего друга, он может находиться за NAT или межсетевым экраном, который не позволяет вам установить прямое соединение с его компьютером.

Чтобы устранить половину проблемы, вы можете использовать telnet как клиент, чтобы установить простое соединение с сервером, чтобы увидеть, доступен ли он:

telnet 127.0.0.1 3000

Если telnet успешно соединяется, значит сеть работает. Если это не помогает, значит, что-то не так (и может дать вам информацию, которая может помочь выяснить, что именно).

Другие вопросы по тегам