Ruby Socket - 在socker上运行方法

时间:2017-12-03 03:36:47

标签: ruby-on-rails ruby sockets socket.io

我是Ruby套接字的新手。我在服务器上有项目,我在服务器中插入了套接字,如下所示:

require 'socket'               
server = TCPServer.open(2000)    
loop {                           
  Thread.start(server.accept) do |client|
  client.puts(Time.now.ctime)  
  client.puts "Closing the connection. Bye!"
  client.close                 
 end

我想从客户端在我的项目中运行我的一个方法:

require 'socket'       

hostname = 'localhost'
port = 2000

s = TCPSocket.open(hostname, port)

while line = s.gets     
   puts line.chop       
   puts "hey"

   # call helloWorldMethod()
end

s.close                 

1 个答案:

答案 0 :(得分:0)

require 'socket'               
server = TCPServer.open(2000)    
loop do                           
  Thread.start(server.accept) do |client|
     client.puts(Time.now.ctime)  
     client.puts "Closing the connection. Bye!"
     client.close                 
  end
end

我相信您的解决方案位于TCPServer class

我找到了关于ruby socket programming

的文档
  

微型Web浏览器

     

我们可以使用套接字库来实现任何Internet协议。例如,这里是获取网页内容的代码

根据您的路由,您可能需要调整网址,它应该是www.yourwebsite.com/users

require 'socket'

host = 'www.tutorialspoint.com'     # The web server
port = 80                           # Default HTTP port
path = "/index.htm"                 # The file we want 
  

这是我们发送以获取文件的HTTP请求

您可以在HTTP postput请求中更改您的请求

request = "GET #{path} HTTP/1.0\r\n\r\n"

socket = TCPSocket.open(host,port)  # Connect to server
socket.print(request)               # Send request
response = socket.read              # Read complete response
# Split response at first blank line into headers and body
headers,body = response.split("\r\n\r\n", 2) 
print body                          # And display it
  

要实现类似的Web客户端,您可以使用Net :: HTTP等预构建的库来处理HTTP。下面的代码与前面的代码相同 -

require 'net/http'                  # The library we need
host = 'www.tutorialspoint.com'     # The web server
path = '/index.htm'                 # The file we want 

http = Net::HTTP.new(host)          # Create a connection
headers, body = http.get(path)      # Request the file
if headers.code == "200"            # Check the status code   
   print body                        
else                                
   puts "#{headers.code} #{headers.message}" 
end