我想在使用socket的2台计算机之间建立连接。为此,其中一个是服务器,这是我写的代码:
sock= TCPServer.open('localhost', 6666)
sock.accept
客户端尝试建立连接:
client = TCPSocket.open(ip_server, 6666)
但不起作用。我注意到扫描服务器的端口,服务器没有打开到网络的端口,只能在本地模式下工作。
任何建议,请提前
答案 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)