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;
}
精妙之处