Python SOCK_STREAM через интернет - PullRequest
       4

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

2 голосов
/ 19 сентября 2009

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

# 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-адрес моих друзей.

При работе через локальный хост работает отлично, но не через интернет ...

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

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

1 Ответ

4 голосов
/ 19 сентября 2009

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

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

telnet 127.0.0.1 3000

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...