解决 NetMQ 创建Demo调试失败问题

1. 问题现象

NetMQ创建ResponseSocket或者RequestSocket提示如下报错:

C# 复制代码
在 System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) 
在 System.Net.Sockets.Socket.Connect(EndPoint remoteEP) 在 NetMQ.Core.Utils.Signaler..ctor() 
在 NetMQ.Core.Mailbox..ctor(String name) 
在 NetMQ.Core.Ctx..ctor() 
在 NetMQ.NetMQContext.Create() 
由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 127.0.0.1:9129

Demo 代码如下:

C# 复制代码
    internal class Program
    {
        static void Main(string[] args)
        {
            using (var server = new ResponseSocket("@tcp://localhost:5556"))
            //using (var server = new ResponseSocket())
            {
                //server.Bind("tcp://*:5555");

                Console.WriteLine($"{DateTime.Now.ToString("yyyyy-MM-dd HH:mm:ss:fffff")} Server started.....");
                while (true)
                {
                    // 接收客户端请求
                    string message = server.ReceiveFrameString();
                    Console.WriteLine($"{DateTime.Now.ToString("yyyyy-MM-dd HH:mm:ss:fffff")} Received: {message}");

                    // 发送响应
                    server.SendFrame("Messages from server...");
                }
            }
        }
    }

按理说这个是官方提供的示例,应该不会是使用上的问题,因此检查本地电脑网络相关问题。

2. 问题分析

打开命令行,执行 ping 127.0.0.1 果然发现问题:

bash 复制代码
PS C:\Users\xxx> ping 127.0.0.1

正在 Ping 127.0.0.1 具有 32 字节的数据:
一般故障。
一般故障。
一般故障。
一般故障。

127.0.0.1 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),

既然都无法ping通,Socket也就无法正常连接啦。

3. 解决方案

127.0.0.1 是本地回环地址,一般来说不会出现ping不通的问题。查询相关资料,主要解决方案如下:

  1. 简单粗暴:关闭window的防火墙,但生产环境不太推荐; 关闭防火墙后,实测可以正常 ping 通 127.0.0.1

2. 重置Intern设置 打开 Internet 选项,找到高级,然后点击还原高级设置-->应用。 实测在防火墙开启时,该修改方案依然有效。

  1. 参考微软社区解决方案(未验证) learn.microsoft.com/zh-cn/answe... 建议排除的操作:

请尝试重置网络适配器选项,在控制面板中的"网络和共享中心"打开网络适配器选项禁用并重新启用无线网络适配器。如果没有效果请打开设备管理器,找到无线网卡驱动卸载然后点击"扫描检测设备硬件改动"选项。

重新配置网络:

1.搜索CMD,打开找到命令提示符(,以管理员)模式运行

2.在弹出的命令框内依次输入下列命令(每行运行完毕后输入下一条)

ipconfig /release

ipconfig /renew

ipconfig /flushdns

ipconfig /registerdns

netsh int ip reset

netsh winsock reset

netsh winhttp reset proxy

重启路由器、检查不同网络连接的情况(如手机热点)

相关推荐
DashVector6 小时前
如何通过Java SDK获取Doc
大数据·后端·阿里巴巴
架构师沉默6 小时前
同事查日志太慢,我现场教他一套 grep 组合拳
java·后端·架构
前端fighter7 小时前
Express vs Koa vs Egg.js:Node.js 后端框架选型指南
前端·后端·面试
编码浪子7 小时前
趣味学RUST基础篇(String)
开发语言·后端·rust
bobz9657 小时前
什么是 ebpf
后端
编码浪子7 小时前
趣味学RUST基础篇(HashMap)
开发语言·后端·rust
SimonKing7 小时前
弃用MinIO,拥抱全新一代分布式文件系统RustFS
java·后端·程序员
AAA修煤气灶刘哥7 小时前
后端人必看!配置中心这玩意儿,用 Nacos 玩明白能少熬 3 个夜
java·后端·spring cloud