Python套接字与HP print s的通信

2024-09-29 18:38:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一台HP Laserjet 2550n,它的集成打印服务器连接到192.168.1.100的本地网络。不幸的是,告诉你碳粉状态的客户端“工具箱”软件只能在Windows XP下运行。我用Wireshark监听通信,使用的是一台旧的XP机器,我想编写我自己的小程序(python下的prob)来接收包含打印机所有信息的xml。我已经设法使用Putty与192.168.1.100:9220的“原始”连接来重复下面的通信并接收XML(我没有附上整个XML,只是开始部分)。在

我正在为从哪里开始使用python而挣扎。我使用了一个简单的socket客户机来建立管道,并且接收插座给我发第一条线(220号喷气客机GGW…)。当我套接字.send(bytes(“TIME 600”,“UTF-8”))然后再次尝试接收,交互式shell“冻结”。在

如果有任何关于如何让python与打印服务器进行如下对话的建议,我将不胜感激。非常感谢!在

220 JetDirect GGW server (version 2.0) ready
SERV HP-DC-WEB
250 96 HP-DC-WEB
TIME 600
200 OK
DEVI
255 MFG:Hewlett-Packard;CMD:PJL,PML,BIDI-ECP,MLC,PCL,POSTSCRIPT,PCLXL;MDL:hp color LaserJet 2550 series;CLS:PRINTER;DES:Hewlett-Packard color LaserJet 2550 series;MEM:MEM=57MB;1284.4DL:4d,4e,1;COMMENT:RES=600x2;
OPEN 96
200 OK
DATA
200 OK
GET /hp/device/info_device_status.xml HTTP/1.1
HOST:localhost:5225
USER-AGENT:hp Proxy/2.5
CONTENT-LENGTH:0

HTTP/1.1 200 OK
Server: Virata-EmWeb/R6_0_1
Transfer-Encoding: chunked
Content-Type: text/xml
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache
Pragma: no-cache

0000013f
<?xml version="1.0" encoding="UTF-8" ?>...</xml>

Tags: webtimeversionokxmldcxputf
1条回答
网友
1楼 · 发布于 2024-09-29 18:38:38

在调试代码时,很难不看到两个以上的小片段,但我有一个猜测:

socket.send(bytes("TIME 600","UTF-8"))

那里没有新线。这似乎是一个基于线路的协议。因此,服务器可能正在等待其余的行,而这一行永远不会来,因此它永远不会发送任何响应,因此您的下一个recv将永远阻塞。在

值得一提的是,该协议可能需要\r\n,而不仅仅是\n,尤其是如果设备看起来是以Windows为中心的。在


同时,sockets are byte streams, not message streamssend不能保证发送整个消息;recv也不能保证从另一方接收整个消息。在

对于您的简单应用程序,您可以很容易地解决这个问题:使用sendall而不是send,并在{}上循环,直到您有一个完整的行,或者,更简单的是,只使用makefile。在

相关问题 更多 >

    热门问题