Linux IPC multiple clients with daemon
ipc, linux, unix-socket
Solution
Basically I think you need to compromise and have a 2 stage process with a SOCK_STREAM socket as stage 1 and SOCK_DGRAM as stage 2. So it will be like this:
server:
- create SOCK_STREAM socket "my.daemon.handshake"
- accept client
- send a randomly generated string XXX to the client and close the socket
- create a SOCK_DGRAM socket "my.daemon.XXX" and start processing it
- repeat (2)
client
- connect to socket "my.daemon.handshake"
- read to EOF -- get value XXX
start communicating with server on socket "my.daemon.XXX"
profit!!!!
Problem
This is really basic but I am blanking right now. I have a daemon process and would like to have multiple clients be able to talk to it. I would like a client to be able to start up and then using a shared library, essentially 'register' with the daemon process. The daemon process would spawn a thread off for this new client and provide a communication pipe between the client and new thread. I am thinking a unix datagram socket as a 'registration channel' for all clients to use initially and then switching over to a client-specific channel but then cannot figure out how I create unique names for the new datagram sockets without setting them up a priori. - Server and clients are on same machine, prefer to use datagram sockets to not have to deal with breaking up the stream into packets. - Will be sending (very) high rate small messages back and forth.