[zeromq-dev] C# client doesnt recieve messages from C++ server

Bennie Kloosteman bklooste at gmail.com
Mon Aug 20 14:10:50 CEST 2012


What error...is it a unicode error since your not using wchar eg no match ?

Ben

On Mon, Aug 20, 2012 at 3:55 PM, Alexander Voron
<voron.alexander at gmail.com>wrote:

> I've tried to program sending messages from one server to multiple
> clients. I have to use C# on client side, C++ on server side. I took
> example from http://zguide.zeromq.org/page:all#toc8 for server:
>
> #define within(num) (int) ((float) num * rand () / (RAND_MAX + 1.0))
>
> int main () {
>
> //  Prepare our context and publisher
> zmq::context_t context (1);
> zmq::socket_t publisher (context, ZMQ_PUB);
> publisher.bind("tcp://*:5556");
> //publisher.bind("ipc://weather.ipc");
>
> //  Initialize random number generator
> srand ((unsigned) time (NULL));
> while (1) {
>
>     int zipcode, temperature, relhumidity;
>
>     //  Get values that will fool the boss
>     zipcode     = within (100000);
>     temperature = within (215) - 80;
>     relhumidity = within (50) + 10;
>
>     //  Send message to all subscribers
>     zmq::message_t message(20);
>     _snprintf ((char *) message.data(), 20 ,
>         "%05d %d %d", zipcode, temperature, relhumidity);
>     publisher.send(message);
>
> }
> return 0;
> }
>
> And for client:
>
> namespace ZMQGuide
> {
> internal class Program
> {
>     public static void Main(string[] args) {
>         Console.WriteLine("Collecting updates from weather server…");
>
>         // default zipcode is 10001
>         string zipcode = "10001 "; // the reason for having a space
> after 10001 is in case of the message would start with 100012 which we
> are not interested in
>
>         if (args.Length > 0)
>             zipcode = args[1] + " ";
>
>         using (var context = new Context(1))
>         {
>             using (Socket subscriber = context.Socket(SocketType.SUB))
>             {
>                 subscriber.Subscribe(zipcode, Encoding.Unicode);
>                 subscriber.Connect("tcp://localhost:5556");
>
>                 const int updatesToCollect = 100;
>                 int totalTemperature = 0;
>
>                 for (int updateNumber = 0; updateNumber <
> updatesToCollect; updateNumber++)
>                 {
>                     string update = subscriber.Recv(Encoding.Unicode);
>                     totalTemperature += Convert.ToInt32(update.Split()[1]);
>                 }
>
>                 Console.WriteLine("Average temperature for zipcode {0}
> was {1}F", zipcode, totalTemperature / updatesToCollect);
>             }
>         }
>     }
> }
> }
>
> They don't communicate with each other. On the client side (C++) I
> commented line with ipc interaction because on Windows client with ipc
> is failed. C# - C#, C++ - C++ interactions works correctly in this
> case. I use 0MQ 2.2, clrzmq 2.2.5.
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20120820/9f869c8e/attachment.htm>


More information about the zeromq-dev mailing list