服务器双网卡消息转发故障求助:仅Linked Card可Pull,Network Card失效
解决方案
问题根源
你的代码仅通过单次阻塞的event.pull("modem_message")监听消息,既没有确保Network Card对应的modem启用并打开端口,也没有处理多modem的消息分发,导致只能捕获到Linked Card的消息,无法响应Network Card的消息。
具体修复步骤
1. 初始化并启用两个Modem
首先绑定Linked Card和Network Card对应的外设,启用并打开与通信方匹配的端口:
-- 根据实际设备位置替换"left"/"right",示例为Linked Card在左侧、Network Card在右侧 local linkedModem = peripheral.wrap("left") local networkModem = peripheral.wrap("right") -- 打开对应接收端口,端口号需和PC、服务器2的通信端口一致 linkedModem.open(123) -- PC与服务器1的通信端口 networkModem.open(456) -- 服务器2与服务器1的通信端口
2. 循环监听并分发所有Modem消息
将单次event.pull改为循环监听,通过modem地址判断消息来源,执行对应转发逻辑:
while true do local _, _, from, port, _, message = event.pull("modem_message") -- 消息来自Linked Card(PC),转发至服务器2 if from == linkedModem.getAddress() then networkModem.transmit(456, port, message) -- 消息来自Network Card(服务器2),转发至PC elseif from == networkModem.getAddress() then linkedModem.transmit(123, port, message) end end
3. 排查验证点
- 确认Network Card物理连接正常,已接入服务器2所在网络
- 检查服务器2发送消息的端口与服务器1Network Card打开的端口完全一致
- 可临时添加
print("Received from:", from)打印消息来源地址,验证是否能接收到Network Card的消息
内容的提问来源于stack exchange,提问作者KwikZilver
相关产品推荐
相关产品推荐

