Tag: tcp ip

如何在Ruby中建立启用SSL的TCP / IP连接

我需要与我的服务器建立TCP连接,该服务器具有启用SSL的端口,我需要访问该端口。 我需要发送一个XML文件并从服务器获取响应。 在启用SSL之前,我能够使用下面提到的代码从服务器获取数据。 require ‘socket’ myXML = ‘test_xml’ host = ‘myhost.com’ port = 12482 socket = TCPSocket.open(host,port) # Connect to server socket.send(myXML, 0) response = socket.recvfrom(port) puts response socket.close 现在我有一个’certi.pfx’,我需要建立一个连接,发送my_xml数据并获得响应。 如何才能做到这一点。 我还想知道我是否有’pem’和’key’文件,如何建立连接,发送my_xml数据并获得响应。 请帮忙。

使用Ruby的TCPSocket-Class发送原始字节数组的最简单方法

我想使用Rubys TCPSocket-Class发送原始字节。 有人举个好榜样吗? 我已经尝试过这种方式,但它不起作用:( require ‘socket’ host = ‘192.168.0.80’ port = 102 s = TCPSocket.new(host, port) s.write [0x03, 0x00, 0x00, 0x16, 0x11, 0xE0, 0x00, 0x00, 0x00, 0x01, 0x00, 0xC1, 0x02, 0x02, 0x02, 0xC2, 0x02, 0x02, 0x02, 0xC0, 0x01, 0x0A ].pack(‘C’) puts s.read s.close puts “exit” 谢谢 :)

通过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 […]