In article <11**********************@i40g2000cwc.googlegroups .com>,
"J Rice" <ri**********@gmail.com> wrote:
Hi Donn,
Not sure I fully understand your suggestion. bind() only works once --
I can't bind again in the client. Same thing with connect() -- once I
issue a connect in the server, it rejects it in the client.
Doing this as a stream works for what I want, but I would like to
understand why it didn't work with datagram.
Right, bind should be on one end only, as it creates
the actual socket file.
Connect works on either end, with SOCK_DGRAM. From
man 2 connect:
The parameter s is a socket. If it is of type SOCK_DGRAM,
this call specifies the peer with which the socket is to be
associated; this address is that to which datagrams are to
be sent, and the only address from which datagrams are to be
received. If the socket is of type SOCK_STREAM, this call
attempts to make a connection to another socket.
However, even if we're straight on this, I confess I
have only addressed your question about the unconnected
endpoint.
The other part of the problem remains, as I don't know
how to get data to actually go both ways. I was a little
surprised by this, and have not been able to scare up any
explicit documentation, but the only example program I
could find for two-way UNIX domain datagram IPC, uses two
sockets, not one -
http://docs.hp.com/en/B2355-90136/ch07s06.html
Donn Cave,
do**@u.washington.edu