Tag: 套接字

在Ruby中反向DNS?

我的环境中有很多没有正确清点的计算机。 基本上,没有人知道哪个IP与哪个mac地址和哪个主机名相关。 所以我写了以下内容: # This script goes down the entire IP range and attempts to # retrieve the Hostname and mac address and outputs them # into a file. Yay! require “socket” TwoOctets = “10.26” def computer_exists?(computerip) system(“ping -c 1 -W 1 #{computerip}”) end def append_to_file(line) file = File.open(“output.txt”, “a”) file.puts(line) file.close end def getInfo(current_ip) […]

使用Timeout :: timeout(n)缩短套接字超时对我来说似乎不起作用

我在https://stackoverflow.com/questions/517219?tab=oldest#tab-top找到了我认为应该完美的工作但是,它对我不起作用。 我在Windows上安装了Ruby 1.9.1,当我尝试“is_port_open”测试时,它不起作用。 无论我为超时设置什么值,套接字调用仍然需要大约20秒才能超时。 有什么想法吗?

Preloader不会忽略websocket – pace js

我在我的网站上添加了预加载器,它在轨道上使用ruby运行,看起来效果很好,但由于推送的websockets,预加载器没有结束,它一直等待,我试着在我的页脚, window.paceOptions = { ajax: { trackWebSockets: false, ignoreURLs: [/pusher/, /heap/] } } 但它不起作用。 我怎么解决这个问题?

Ruby – 如何跨核心/处理器进行线程化

我(重新)在ruby中编写套接字服务器以期简化它。 阅读ruby套接字我跑过一个网站 ,说multithreadingruby应用只在一台机器上使用一个核心/处理器。 问题: 这准确吗? 我关心的? 此服务器中的每个线程可能会运行几分钟,并且会有很multithreading。 操作系统(CentOS 6.5)是否足够智能以共享负载? 这与C ++中的线程有什么不同? (当前套接字服务器的语言)IE做pthreads自动使用多个核心? 如果我而不是线程怎么办?

在gets()中从Ruby中损坏的TCP套接字恢复

我正在读取TCP套接字上的输入行,类似于: class Bla def getcmd @sock.gets unless @sock.closed? end def start srv = TCPServer.new(5000) @sock = srv.accept while ! @sock.closed? ans = getcmd end end end 如果端点在getline()运行时终止连接,则gets()挂起。 我该如何解决这个问题? 是否有必要进行非阻塞或定时I / O?

Ruby TCPSocket写不起作用,但是put呢?

我正在使用GServer和TCPSocket处理Ruby TCP客户端/服务器应用程序。 我遇到了一个我不明白的问题。 我的TCPSocket客户端成功连接到我的GServer,但我只能使用puts发送数据。 调用TCPSocket.send或TCPSocket.write什么都不做。 我缺少一些魔法吗? tcp_client = TCPSocket.new( ipaddr, port ) tcp_client.puts( ‘Z’ ) # -> GServer receives “Z\n” 但如果我使用写或发送… tcp_client = TCPSocket.new( ipaddr, port ) tcp_client.write( ‘Z’ ) # -> nothing is received tcp_client.send( ‘Z’ ) # -> nothing is received 谢谢您的帮助 附加信息: Linux和Windows上的行为是相同的。 写入后刷新套接字不会改变行为。

postgresql datababse出错:服务器是否在本地运行并接受Unix域套接字“/var/run/postgresql/.s.PGSQL.5432”上的连接?

当我运行rake db:migrate或运行rails s命令时,我得到同样的错误: Error : could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket “/var/run/postgresql/.s.PGSQL.5432”? 当我尝试使用rails s时,我在浏览器中收到错误。 这是我的database.yml default: &default adapter: postgresql encoding: unicode pool: 5 development: <<: *default database: books_development test: <<: *default database: books_test production: <<: *default database: books_production username: […]

如何处理ZeroMQ + Ruby中的线程问题?

阅读关于线程安全的ZeroMQ常见问题时偶然发现。 我的multithreading程序在ZeroMQ库中的奇怪位置不断崩溃。 我究竟做错了什么? ZeroMQ套接字不是线程安全的。 “指南”中对此进行了详细介绍。 简短版本是不应在线程之间共享套接字。 我们建议为每个线程创建一个专用套接字。 对于每个线程的专用套接字不可行的情况,当且仅当每个线程在访问套接字之前执行完整的内存屏障时,才可以共享套接字。 大多数语言都支持Mutex或Spinlock,它将代表您执行完整的内存屏障。 我的multithreading程序在ZeroMQ库中的奇怪位置不断崩溃。 我究竟做错了什么? 以下是我的以下代码: Celluloid::ZMQ.init module Scp module DataStore class DataSocket include Celluloid::ZMQ def pull_socket(socket) @read_socket = Socket::Pull.new.tap do |read_socket| ## IPC socket read_socket.connect(socket) end end def push_socket(socket) @write_socket = Socket::Push.new.tap do |write_socket| ## IPC socket write_socket.connect(socket) end end def run pull_socket and push_socket and loopify! end […]

Heroku worker dyno上的进程之间的TCP套接字通信

我想知道如何在Heroku工作者dyno上的进程之间进行通信。 我们希望Resque工作者读取队列并将数据发送到在同一个dyno上运行的另一个进程。 “其他进程”是一种现成的软件,通常使用TCP套接字(端口xyz)来监听命令。 它被设置为在Resque工作程序启动之前作为后台进程运行。 但是,当我们尝试本地连接到该TCP套接字时,我们无处可去。 我们设置队列的Rake任务执行此操作: task “resque:setup” do # First launch our listener process in the background `./some_process_that_listens_on_port_12345 &` # Now get our queue worker ready, set up Redis backing store port = 12345 ENV[‘QUEUE’] = ‘*’ ENV[‘PORT’] = port.to_s Resque.redis = ENV[‘REDISTOGO_URL’] # Start working from the queue WorkerClass.enqueue end 这样做 – 我们的侦听器进程运行,Resque尝试处理排队的任务。 […]

通过SO_RCVTIMEO套接字选项在Ruby中设置套接字超时

我试图通过SO_RCVTIMEO套接字选项在Ruby中使套接字超时,但它似乎对任何最近的* nix操作系统没有影响。 使用Ruby的Timeout模块不是一个选项,因为它需要为每个超时生成并加入线程,这可能会变得很昂贵。 在需要低套接字超时且具有大量线程的应用程序中,它基本上会导致性能下降。 在许多地方都已经注意到这一点,包括Stack Overflow 。 我已经阅读了Mike Perham关于此主题的优秀post,并努力将问题减少到一个可运行代码文件,创建了一个将接收请求的TCP服务器的简单示例,等待请求中发送的时间量和然后关闭连接。 客户端创建套接字,将接收超时设置为1秒,然后连接到服务器。 客户端告诉服务器在5秒后关闭会话,然后等待数据。 客户端应在一秒钟后超时,但在5之后成功关闭连接。 #!/usr/bin/env ruby require ‘socket’ def timeout sock = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0) # Timeout set to 1 second timeval = [1, 0].pack(“l_2”) sock.setsockopt Socket::SOL_SOCKET, Socket::SO_RCVTIMEO, timeval # Connect and tell the server to wait 5 seconds sock.connect(Socket.pack_sockaddr_in(1234, ‘127.0.0.1’)) sock.write(“5\n”) # Wait for data to […]