学习笔记一: NetMQ 中的黑科技(1) socket的用法

本文介绍了NetMQ Signaler类中一种独特的socket用法,通过先创建socket监听器绑定到端口,然后创建socket并连接到监听器,实现一步到位的连接建立。这种精妙的方法避免了传统方式中accept和connect操作在不同线程中的使用,对于理解socket机制有深刻启示。
摘要由CSDN通过智能技术生成

NetMQ Signaler类中 socket的用法:

   public Signaler()
    {
        m_dummy = new byte[] { 0 };
        m_receiveDummy = new byte[1];

        // Create the socketpair for signaling.
        using (var listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Unspecified))
        {
            listener.NoDelay = true;
            listener.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);

            // using ephemeral port
            listener.Bind(new IPEndPoint(IPAddress.Loopback, 0));
            listener.Listen(1);

            m_writeSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Unspecified) { NoDelay = true };
            m_writeSocket.Connect(listener.LocalEndPoint);
            m_readSocket = listener.Accept();
        }

        m_writeSocket.Blocking = false;
        m_readSocket.Blocking = false;
    }

精妙之处࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值