2010-06-28 29 views
1

我想在两台使用套接字的计算机之间建立连接。为了这个目的,其中之一是服务器,这是我写的代码:ruby​​中的TCPServer套接字

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

客户端试图建立连接:

client = TCPSocket.open(ip_server, 6666) 

,但不工作。我注意到扫描服务器的端口,服务器没有打开端口到网络,只能在本地模式下工作。

任何建议,提前

THK

回答

0

是的,这还好吧如此,因为你说的应该服务器端口绑定到的'localhost'接口,这是127.0.0.1,并绑定到loopback接口,并没有任何真实的界面连接到现实世界。

你应该尝试

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

它工作在“本地模式”,因为是localhost至极是环回地址,为服务器在启动计算机。您的服务器的IP地址应该是解决你的电脑在本地网络上(类似于192.168.xx)。

3

我已成功使用此代码。服务器端:

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

,并在客户端上

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

然而,最近我一直在使用的'EventMachine'宝石,这使处理开始的插座容易10倍

1

它已经表示,服务使用回环“localhost”以“本地模式”运行。

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

TCPServer是底层文件描述符的方便界面。坦率地说,它几乎使得套接字编程太容易了。

就像已经说过的那样,'localhost'是一个回环到127.0.0.1。因此,你的语句相当于:

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

如果要使用本地网络上的网络连接,假设服务器具有的192.168.0.1分配的IP,可以分配一个本地IP地址上侦听:

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

对于一个开放的端口,可以想象向所有人开放,使用:

sock= TCPServer.open(6666) 
sock.accept 

请记住,一切都是一个文件 - 你让正在读连接并从两个(或更多)位置写入同一个文件或一系列文件。控制谁可以访问这些文件以及在多大程度上控制这些文件很重要。

相关问题