public static void Main(string[] args) { var workers = new List <Thread>(WORKERS_COUNT); using (NetMQContext context = NetMQContext.Create()) { using (RouterSocket client = context.CreateRouterSocket()) { string cnn = string.Format("tcp://localhost:{0}", PORT_NUMBER); client.Bind(cnn); Console.WriteLine("[B] Connect to {0}", cnn); for (int workerNumber = 0; workerNumber < WORKERS_COUNT; workerNumber++) { workers.Add(new Thread(WorkerTask)); workers[workerNumber].Start(PORT_NUMBER); } for (int taskNumber = 0; taskNumber < WORKERS_COUNT * 10; taskNumber++) { // LRU worker is next waiting in queue string address = client.ReceiveString(); //Console.WriteLine("[B] Message received: {0}", address); string empty = client.ReceiveString(); //Console.WriteLine("[B] Message received: {0}", empty); string ready = client.ReceiveString(); //Console.WriteLine("[B] Message received: {0}", ready); client.SendMore(address); //Console.WriteLine("[B] Message sent: {0}", address); client.SendMore(""); //Console.WriteLine("[B] Message sent: {0}", ""); client.Send("This is the workload"); //Console.WriteLine("[B] Message sent: {0}", "This is the workload"); } // Now ask mamas to shut down and report their results for (int taskNbr = 0; taskNbr < WORKERS_COUNT; taskNbr++) { string address = client.ReceiveString(); //Console.WriteLine("[B] Message received: {0}", address); string empty = client.ReceiveString(); //Console.WriteLine("[B] Message received: {0}", empty); string ready = client.ReceiveString(); //Console.WriteLine("[B] Message received: {0}", ready); client.SendMore(address); //Console.WriteLine("[B] Message sent: {0}", address); client.SendMore(""); //Console.WriteLine("[B] Message sent: {0}", ""); client.Send("END"); //Console.WriteLine("[B] Message sent: {0}", "END"); } } } Console.ReadLine(); }
static void Main(string[] args) { using (NetMQContext context = NetMQContext.Create()) using (RouterSocket router = context.CreateRouterSocket()) { router.Bind("tcp://*:33333"); while (true) { byte[] identity = router.Receive(); string message = router.ReceiveString(); Console.WriteLine(message); router.SendMore(identity).Send(message); } } }