Ich habe zwei einfache Programme: ein Client und ein Server. Ich versuche zstr_sendfm und zstr_recv zu verwenden, um eine einfache Zeichenfolge zu senden und zu empfangen. Grob gesagt benutze ich den Code von file transfer test im zeromq Tutorial. Hier ist die Server-Funktion:C ZeroMQ zstr_recv hängt
#define PIPELINE = 10;
int server()
{
char *name = "someName";
zctx_t *ctx = zctx_new();
void *router = zsocket_new(ctx, ZMQ_ROUTER);
zsocket_set_hwm(router, PIPELINE*2);
if (0 == zsocket_connect(router, tcp://127.0.0.1:6000))
{
printf("failed to connect to router.\n");
}
printf("sending name %s\n, name);
zstr_sendfm(router, name);
return 0;
}
Hier ist die Client-Funktion:
int client()
{
zctx_t *ctx = zctx_new();
void *dealer = zsocket_new (ctx, ZMQ_DEALER);
zsocket_bind(dealer, "tcp://*:6000")
char *receivedName = zstr_recv(dealer);
printf("received the following name: %s\n", receivedName);
return 0
}
Beide sind in zwei getrennten Programmen laufen (die nichts anderes tun, anders als ihre jeweiligen Funktionen ausführen) auf demselben Computer.
Hier ist, wie die Dinge immer spielen:
- Start-Client-Funktion, die bei „zstr_recv“ hält, wie es
- Start-Server-Funktion angenommen hat, die erfolgreich verbindet, behauptet, die Daten gesendet zu haben, und Exits
- Client-Funktion weiterhin sitzen und warten, aber behauptet, nichts vom Server erhalten haben.
Was fehlt mir hier? Ich habe eine Reihe von Fehlerüberprüfungen hinzugefügt und dies sogar ohne Erfolg in gdb ausprobiert.
Hilfe und Beratung geschätzt.