ruby中的TCPServer套接字

时间:2010-06-28 17:16:19

标签: ruby sockets tcp

我想在使用socket的2台计算机之间建立连接。为此,其中一个是服务器,这是我写的代码:

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

客户端尝试建立连接:

client = TCPSocket.open(ip_server, 6666)

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

任何建议,请提前

4 个答案:

答案 0 :(得分:3)

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

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

并在客户端

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

然而,最近我开始使用'EventMachine'宝石,这使得处理插座容易了10倍

答案 1 :(得分: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

如果您将在本地网络上使用网络连接,假设服务器的IP分配为192.168.0.1,您可以分配本地IP地址进行监听:

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

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

sock= TCPServer.open(6666)
sock.accept

请记住,一切都是文件 - 您正在进行的连接是从两个(或更多)位置读取和写入同一文件或一系列文件。控制谁可以访问这些文件以及访问的程度非常重要。

答案 2 :(得分:0)

是的,这样就好了,因为你说它应该将服务器端口绑定到'localhost'的接口,这是127.0.0.1并且绑定到你的环回接口而不是任何真正的接口连接到现实世界。

你应该试试

sock = TCPServer.new(6666)
sock.accept

答案 3 :(得分:0)

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