2010-06-28 4 views
1

Я хотел бы установить соединение между двумя компьютерами, использующими socket. Для этого один из них является сервером, и это код, который я написать:Разъем TCPServer в ruby ​​

sock= TCPServer.open('localhost', 6666) 
sock.accept 

клиент пытается установить соединение:

client = TCPSocket.open(ip_server, 6666) 

, но не работает. Я заметил, что порты сервера сканирования, которые сервер не открывает порт в сети, работают только в локальном режиме.

Любое предложение, THK заранее

ответ

0

Да, и это Allright так, потому что вы сказали, что нужно связать порт сервера с интерфейсом 'localhost' и это 127.0.0.1 и привязать к интерфейсу обратной петли, а не какой-либо реальный интерфейс, соединяющий реальный мир.

Вы должны попробовать

sock = TCPServer.new(6666) 
sock.accept 
0

Он работает в «локальном режиме», потому что он прослушивает LOCALHOST Wich является петлевой адрес для компьютера сервер запущен в. IP-адрес сервера должен быть адрес вашего компьютера имеет локальную сеть (что-то вроде 192.168.xx).

3

Я успешно использовал этот код. на стороне сервера:

serverSocket = TCPServer.new("", port) 
serverSocket.accept 

и на клиенте

t = TCPSocket.new(server_ip, port.to_i) 

Однако, в последнее время я начал использовать 'EventMachine' драгоценный камень, который сделал обработку розетки 10 раз легче

1

Это уже было сказано, что служба работает в «Локальном режиме», используя loopback «localhost».

sock= TCPServer.open('localhost', 6666) 
sock.accept 

TCPServer представляет собой удобный интерфейс для базового дескриптора файла. Честно говоря, это почти упрощает программирование сокетов.

Как уже сказано, «localhost» - это loopback to 127.0.0.1. Таким образом, ваше утверждение эквивалентно:

sock= TCPServer.open('127.0.0.1', 6666) 
sock.accept 

Если вы будете использовать сетевое подключение в локальной сети, предполагая, что сервер имеет назначенный IP из 192.168.0.1, вы можете назначить локальный IP-адрес для прослушивания:

sock= TCPServer.open('192.168.0.1', 6666) 
sock.accept 

для открытого порта, предположительно, открыт для всех, использование:

sock= TCPServer.open(6666) 
sock.accept 

Помните, что все является файлом - соединение вы делаете читает и запись в тот же файл или ряд файлов из двух (или более) местоположений. Важно контролировать, кто может иметь доступ к этим файлам и в какой степени.

Смежные вопросы