oh my fault, I just copied these methods from the examples without looking at 
them in detail.

thank you!

-----Ursprüngliche Nachricht-----
Von: [email protected] 
[mailto:[email protected]] Im Auftrag von Dorvin
Gesendet: Mittwoch, 18. März 2015 09:00
An: ZeroMQ development list
Betreff: Re: [zeromq-dev] Limit of characters for zmq_send ?

 From api docs on zmq_recv: "Any bytes exceeding the length specified by 
the len argument shall be truncated". You try to send 1k chars and your 
buffer can store 256.

Additionally read about buffer overflows and how strcat works.


Cheers


W dniu 2015-03-18 o 07:22, Bachmair Florian - flexSolution GmbH pisze:
> Here is my example: I did it with CURVE but it's the same without CURVE
> I publish a String with 1024 'x' ending with "\nENDE" to determine that the 
> end is sent as well
>
> publisher:
>
> #include <stdlib.h>
> #include <stdio.h>
> #include <stdbool.h>
> #include <string.h>
> #include <czmq.h>
>
> #include <assert.h>
>
> // Convert C string to 0MQ string and send to socket
> static int s_send(void *socket, char *string) {
>       int size = zmq_send(socket, string, strlen(string), 0);
>       return size;
> }
> // Sends string as 0MQ string, as multipart non-terminal
> static int s_sendmore(void *socket, char *string) {
>       int size = zmq_send(socket, string, strlen(string), ZMQ_SNDMORE);
>       return size;
> }
> int main() {
>       char str[1024];
>       int i;
>       strcpy(str, "x");
>       for (i = 0; i < sizeof(str); i++) {
>               strcat(str, "x");
>       }
>       strcat(str, "\nENDE");
>       puts(str);
>
>       puts("Init Publisher");
>       const char *addr = "tcp://127.0.0.1:8888";
>       zctx_t *context = zctx_new();
>
>       void *pub = zsocket_new(context, ZMQ_PUB);
>
>       zcert_t *server_cert = zcert_load("server_cert.txt_secret");
>       assert(server_cert);
>       int rc = zsocket_bind(pub, addr);
>       assert(rc != -1);
>       sleep(5);
>       puts("publish");
>       for (i = 0; i < 10; i++) {
>               sleep(1);
>               s_sendmore(pub, "A");
>               s_send(pub, str);
>       }
>
>       return 0;
> }
>
>
> subscriber
>
> #include <stdlib.h>
> #include <stdint.h>
> #include <stdio.h>
> #include <stdbool.h>
> #include <string.h>
> #include <czmq.h>
> #include <assert.h>
> static char *
> s_recv(void *socket) {
>       char buffer[256];
>       int size = zmq_recv(socket, buffer, 255, 0);
>       if (size == -1)
>               return NULL;
>       if (size > 255)
>               size = 255;
>       buffer[size] = 0;
>       return strdup(buffer);
> }
> int main(void) {
>       puts("Init Subscriber");
>       fflush(stdout);
>       zctx_t* context = zctx_new();
>
>       void* subscriber = zsocket_new(context, ZMQ_SUB);
>
>       zmq_setsockopt(subscriber, ZMQ_SUBSCRIBE, "A", strlen("A"));
>
>       zsocket_connect(subscriber, "tcp://127.0.0.1:8888");
>
>       //zmq_setsockopt(subscriber, ZMQ_SUBSCRIBE, "B", 1);
>       while (1) {
>               char *topic = s_recv(subscriber);
>               char *value = s_recv(subscriber);
>               
>               printf("%s:%s\n", topic, value);
>               free(topic);
>               free(value);
>       }
>       // We never get here, but clean up anyhow
>       zmq_close(subscriber);
>       zmq_ctx_destroy(context);
> }
>
>
> -----Ursprüngliche Nachricht-----
> Von: [email protected] 
> [mailto:[email protected]] Im Auftrag von Pieter Hintjens
> Gesendet: Dienstag, 17. März 2015 15:23
> An: ZeroMQ development list
> Betreff: Re: [zeromq-dev] Limit of characters for zmq_send ?
>
> There's no limit. Can you provide a minimal example that shows the problem?
>
> On Tue, Mar 17, 2015 at 12:53 PM, Bachmair Florian - flexSolution GmbH
> <[email protected]> wrote:
>> Hi!
>>
>>
>>
>> I have tried to send/publish string with 1000 characters. But the subscriber
>> only gets about 200-300 of these characters, the rest is cut off.
>>
>>
>>
>> Is there a Limit?
>>
>>
>> _______________________________________________
>> zeromq-dev mailing list
>> [email protected]
>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>
> _______________________________________________
> zeromq-dev mailing list
> [email protected]
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
>
>
>
> _______________________________________________
> zeromq-dev mailing list
> [email protected]
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>

_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev


_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to