You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅用单PC应用接收IP秤的网络打印数据?

问题描述

我正在开发一款应用,希望通过网络连接接收IP秤的「打印」数据(即小票上的内容)。我只想让这款应用作为数据接收端,不需要客户端-服务器架构。该IP秤已经配置了独立IP地址与端口。我查过的所有教程和论坛都提到需要客户端与服务器应用,但我只用一台PC连接IP秤。

我尝试了以下示例代码来建立连接:

import socket

TCP_IP = "0.0.0.0" #实际用的是我自己的IP
TCP_PORT = 1025 #IP秤上设置的端口
BUFFER_SIZE = 1024

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect((TCP_IP, TCP_PORT))
print("connected: ", s)
data = s.recv(BUFFER_SIZE)
s.close()
print("received data: ", data)

输出内容如下:

connected: <socket.socket fd=188, family=2, type=2, proto=0, laddr=('PC的IP地址', 53797), raddr=('IP秤的IP地址', 22)>

  • 除了把缓冲区大小改为0时会输出 received data: b'' 之外,没有其他打印信息。

解决方案

核心问题分析

你的代码存在几个关键问题:

  1. 协议与端口不匹配:代码用了UDP套接字(SOCK_DGRAM),但输出显示连接到了IP秤的22端口(SSH默认端口),而非你设置的1025端口,说明要么参数填错,要么IP秤实际用TCP协议传输打印数据。
  2. UDP用法错误:UDP是无连接协议,connect仅绑定目标地址,不会建立真正连接。如果IP秤是主动推送数据到PC,应该用UDP监听模式,而非主动连接。
  3. 端口混淆:IP秤的管理端口(如22)和打印数据端口是不同的,需确认数据传输的正确端口。

修正后的代码示例

场景1:IP秤主动UDP推送数据到PC指定端口

若IP秤配置为将打印数据UDP推送到PC的指定端口,用以下代码监听:

import socket

# 监听PC的所有网卡和对应端口(需与IP秤配置的目标端口一致)
LISTEN_IP = "0.0.0.0"
LISTEN_PORT = 1025
BUFFER_SIZE = 1024

# 创建UDP套接字并绑定端口
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((LISTEN_IP, LISTEN_PORT))
print(f"正在监听 {LISTEN_IP}:{LISTEN_PORT}...")

while True:
    data, addr = s.recvfrom(BUFFER_SIZE)
    # 解码数据,若乱码可尝试GBK等小票常用编码
    print(f"从 {addr} 收到小票数据: {data.decode('utf-8', errors='ignore')}")

场景2:IP秤为TCP服务器模式,需主动连接获取数据

若IP秤是TCP服务器,等待客户端连接后发送数据,用以下代码:

import socket

SCALE_IP = "IP秤的实际IP地址"
SCALE_PORT = 1025  # 确认IP秤的TCP数据端口
BUFFER_SIZE = 1024

# 创建TCP套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    s.connect((SCALE_IP, SCALE_PORT))
    print(f"已连接到IP秤 {SCALE_IP}:{SCALE_PORT}")
    
    while True:
        data = s.recv(BUFFER_SIZE)
        if not data:
            break
        print(f"收到小票数据: {data.decode('utf-8', errors='ignore')}")
except ConnectionRefusedError:
    print("无法连接到IP秤,请检查IP、端口是否正确,或IP秤是否开启数据服务")
finally:
    s.close()

关键注意事项

  • 务必确认IP秤的传输协议(UDP/TCP)和数据端口,可查阅IP秤说明书或配置界面。
  • 若用UDP监听,需确保PC防火墙允许该端口的入站流量,且IP秤能访问到PC的IP。
  • 小票数据可能用GBK等编码,若utf-8解码乱码,可替换为对应编码尝试。

内容的提问来源于stack exchange,提问作者Christopher Must

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 12:45:11