我有以下代码
require 'socket'
def connect(socket)
while line = socket.gets # Read lines from socket
puts line # and print them
end
socket.close # close socket when done
end
def serve(server)
loop do
client = server.accept # Wait for a client to connect
client.puts "Hello !"
client.puts "Time is #{Time.now}"
client.close
end
end
if ARGV[0] == "-s"
ip_port = ARGV[1]
server = TCPServer.new ip_port
serve(server)
elsif ARGV.length == 2
ip_address = ARGV[0]
ip_port = ARGV[1]
puts ip_address
puts ip_port
socket = TCPSocket.new ip_address , ip_port
connect(socket)
else
puts "PLease enter an IP address and IP port"
end
上面的代码是基本的服务器和客户端。使用-s标志告诉程序就像服务器一样。
当我使用localhost作为地址但当我使用127.0.0.1作为地址时不起作用时,此代码有效。我使用127.0.0.1时收到No connection could be made because the target machine actively refused it. - connect(2)
错误。我想知道是否有人知道问题所在。
答案 0 :(得分:1)
我认为代码本身没有任何问题,由于防火墙设置或机器上的其他东西,这看起来更像是一个问题。
您可以尝试打开端口,然后尝试从其他终端telnet 127.0.0.1 port
远程登录。您还可以使用netstat -atun
检查端口是否确实打开以及绑定到哪个地址(0.0.0.0表示可以通过所有IP地址访问)。