[zeromq-dev] assertion failed on zsocket_connect with ZMQ_REQ

Pieter Hintjens ph at imatix.com
Tue May 19 10:22:52 CEST 2015


The problem is that the endpoint is rejected by your operating system
as "invalid" for some reason; possibly networking is switched off. You
can print strerror (errno) or zmq_strerror (zmq_errno ()) to see the
actual error message.

On Tue, May 19, 2015 at 10:14 AM, Bachmair Florian - flexSolution GmbH
<florian.bachmair at flexsolution.eu> wrote:
> 'addr' is tcp://127.0.0.1:9998
> so the problem may be that the other side of the socket has crashed?
>
> I see that I do not close the 'req' Socket, could this be a problem?
>
> Am 19.05.2015 um 09:59 schrieb Pieter Hintjens:
>> zsocket_connect does not block. It returns -1 if the endpoint is
>> invalid, which presumably it is. Could you tell us what the value of
>> 'addr' is ?
>>
>> On Tue, May 19, 2015 at 9:40 AM, Bachmair Florian - flexSolution GmbH
>> <florian.bachmair at flexsolution.eu> wrote:
>>> hi!
>>>
>>> Sometimes I get an assertion failed in my code.
>>> Why is this? shouldn't it block, till a connection is established?
>>>
>>>
>>>
>>> NIEXPORT jstring JNICALL Java_eu_flexsolution_core_JNI_1zeromq_request(
>>>          JNIEnv *env, jobject object, jstring address, jstring timestamp,
>>>          jstring format, jstring command, jstring message) {
>>>      const char* addr = (*env)->GetStringUTFChars(env, address, 0);
>>>      const char* ts = (*env)->GetStringUTFChars(env, timestamp, 0);
>>>      const char* f = (*env)->GetStringUTFChars(env, format, 0);
>>>      const char* cmd = (*env)->GetStringUTFChars(env, command, 0);
>>>      const char* msg = (*env)->GetStringUTFChars(env, message, 0);
>>>
>>>      printf("REQ:%s:%s:%s:%s:%s\n", addr,cmd, msg, f, ts);
>>>      fflush(stdout);
>>>      void *req = zsocket_new(context, ZMQ_REQ);
>>>      int rc = zsocket_connect(req, "%s", addr);
>>>      assert(rc == 0);
>>>      s_sendmore(req, ts);
>>>      s_sendmore(req, f);
>>>      s_sendmore(req, cmd);
>>>      s_send(req, msg);
>>>
>>>      char* reply = s_recv(req);
>>>      printf("reply: %s\n", reply);
>>>      fflush(stdout);
>>>
>>>      (*env)->ReleaseStringUTFChars(env, timestamp, ts);
>>>      (*env)->ReleaseStringUTFChars(env, format, f);
>>>      (*env)->ReleaseStringUTFChars(env, message, msg);
>>>
>>>      jstring ret = (*env)->NewStringUTF(env, reply);
>>>      return ret;
>>> }
>>>
>>> _______________________________________________
>>> zeromq-dev mailing list
>>> zeromq-dev at lists.zeromq.org
>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>
>> _______________________________________________
>> zeromq-dev mailing list
>> zeromq-dev at lists.zeromq.org
>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev



More information about the zeromq-dev mailing list