【发布时间】:2011-03-09 06:04:29
【问题描述】:
我想使用套接字在两台计算机之间建立连接。为此,其中一个是服务器,这是我编写的代码:
sock= TCPServer.open('localhost', 6666)
sock.accept
客户端尝试建立连接:
client = TCPSocket.open(ip_server, 6666)
但不工作。我注意到扫描服务器的端口,服务器没有打开网络端口,只在本地模式下工作。
任何建议,请提前考虑
【问题讨论】:
我想使用套接字在两台计算机之间建立连接。为此,其中一个是服务器,这是我编写的代码:
sock= TCPServer.open('localhost', 6666)
sock.accept
客户端尝试建立连接:
client = TCPSocket.open(ip_server, 6666)
但不工作。我注意到扫描服务器的端口,服务器没有打开网络端口,只在本地模式下工作。
任何建议,请提前考虑
【问题讨论】:
我已成功使用此代码。服务器端:
serverSocket = TCPServer.new( "", port )
serverSocket.accept
在客户端
t = TCPSocket.new(server_ip, port.to_i)
不过,最近我开始使用'EventMachine' gem,它让处理套接字变得容易了 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
如果您将在本地网络上使用网络连接,假设服务器分配的 IP 为 192.168.0.1,您可以分配一个本地 IP 地址来监听:
sock= TCPServer.open('192.168.0.1', 6666)
sock.accept
对于一个开放的端口,可以想象对所有人开放,使用:
sock= TCPServer.open(6666)
sock.accept
请记住,一切都是文件——您建立的连接是从两个(或更多)位置读取和写入同一个文件或一系列文件。重要的是控制谁可以访问这些文件,以及在何种程度上。
【讨论】:
是的,没关系,因为您说它应该将服务器端口绑定到'localhost' 的接口,这是127.0.0.1,并且绑定到您的环回接口,而不是连接到现实世界的任何真实接口。
你应该试试
sock = TCPServer.new(6666)
sock.accept
【讨论】:
它在“本地模式”下工作,因为它在 localhost 上侦听,这是启动服务器的计算机的环回地址。服务器的 IP 地址应该是计算机在本地网络上的地址(例如 192.168.xx) .
【讨论】: