我想在两台使用套接字的计算机之间建立连接。为了这个目的,其中之一是服务器,这是我写的代码:ruby中的TCPServer套接字
sock= TCPServer.open('localhost', 6666)
sock.accept
客户端试图建立连接:
client = TCPSocket.open(ip_server, 6666)
,但不工作。我注意到扫描服务器的端口,服务器没有打开端口到网络,只能在本地模式下工作。
任何建议,提前
THK我想在两台使用套接字的计算机之间建立连接。为了这个目的,其中之一是服务器,这是我写的代码:ruby中的TCPServer套接字
sock= TCPServer.open('localhost', 6666)
sock.accept
客户端试图建立连接:
client = TCPSocket.open(ip_server, 6666)
,但不工作。我注意到扫描服务器的端口,服务器没有打开端口到网络,只能在本地模式下工作。
任何建议,提前
THK是的,这还好吧如此,因为你说的应该服务器端口绑定到的'localhost'
接口,这是127.0.0.1
,并绑定到loopback接口,并没有任何真实的界面连接到现实世界。
你应该尝试
sock = TCPServer.new(6666)
sock.accept
它工作在“本地模式”,因为是localhost至极是环回地址,为服务器在启动计算机。您的服务器的IP地址应该是解决你的电脑在本地网络上(类似于192.168.xx)。
我已成功使用此代码。服务器端:
serverSocket = TCPServer.new("", port)
serverSocket.accept
,并在客户端上
t = TCPSocket.new(server_ip, port.to_i)
然而,最近我一直在使用的'EventMachine'宝石,这使处理开始的插座容易10倍
它已经表示,服务使用回环“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
请记住,一切都是一个文件 - 你让正在读连接并从两个(或更多)位置写入同一个文件或一系列文件。控制谁可以访问这些文件以及在多大程度上控制这些文件很重要。