c++ - accept() in message queues IPC UNIX -


for (;;) {     if (msgrcv(msqid, &flag, sizeof(struct flags) - sizeof(long), 1, ipc_nowait)>0)            break; }     msgsnd(msqid, &message , sizeof(struct messages) - sizeof(long), 0); 

is there accept() function in sockets ipc, message queues ipc? server should wait client connection , when client connected send data it. special send client useless data , check data in infinity loop(that means client connected, know stupid algorithm).

no, there nothing directly analogous. message queues more connectionless datagram sockets connection-oriented stream sockets (which support accept() , forth).

some implementations (z/os?) expose number of processes blocked on msgrcv, similar looking for, not portable.

as see it, have 2 easy options.

first, doing don't ipc_nowait in server's msgrcv. no point in spinning in loop if you're not doing anything. block until client announces itself. (and use different message types communication client-to-server , server-to-client — don't want clients consuming messages server, nor vice-versa.)

second, switch af_unix stream sockets, give accept()able semantics.


Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -