2016-07-22 92 views
2

我试图用ruby语言连接到打印机。打印机供应商已经使用了一些我可以用来与打印机通信的命令。Ruby:使用ruby连接到打印机

我正在使用ruby telnet库与打印机进行通信。它工作正常。下面是使用ruby telnet库为我工作的代码。

require 'net/telnet' 
localhost = Net::Telnet::new("Host" => "192.168.25.168","Port" => 20000, "Timeout" => 15) 
localhost.cmd("MARK START") # starts printer 

上面的代码完美地工作,但我不想使用telent库。我想使用红宝石套接字编程来执行打印机命令。

我曾尝试下面的代码,但它不工作

require 'socket' 
sock = TCPSocket.new('192.168.25.168', 20000) 
sock.write 'MARK START' 
sock.close 

还有什么能这样做的原因?为什么使用telnet库的代码正在工作,并且使用TCP套接字编程的代码无法工作。

回答

1

看来打印机正在使用Telnet协议,描述为here。 Telnet位于更高级的抽象层,并使用TCP传输其数据。当您的打印机需要telnet连接时,您正尝试通过tcp发送消息,而无需建立任何telnet连接,以便接收命令。