Re: Problem with socketpair , AF_UNIX and select call - can anybody through any light on this!



On Fri, Oct 12, 2007 at 11:25:34AM +0100, Howard Wilkinson wrote:
Luciano Rocha wrote:
......
Is there a reason for using SOCK_DGRAM instead of the usual SOCK_STREAM?
The latter will make the recv return 0, indicating the other end closed
the connection, as it did happen, as one peers exits before the other
select(2)s:

$ ./socketpair server - Socket is ready to write
server - Socket is not ready to read
exited: 14520
master - Socket is ready to write
master - Socket is ready to read
master - recv - Resource temporarily unavailable(11)

This could be a bug, or standard behaviour for disconnected datagram
sockets (I don't know enough of the standards).


I attach a slightly improved version. This sleeps for an hour on both sides.
I have tried removing the MSG_DONTWAIT but still get the same response.

The SOCK_DGRAM is because I have small packets flowing that I do not want
fragmented but do not mind if they get lost, .... but then inside a machine
that does not matter. However with SOCK_STREAM I get zero length messages
but still ready to read continuously!!! See attached!

Yes, that means the other end closed the connection. EOF isn't set in
efds, but in rds.

Also, see poll(2) if you'll be waiting on a small number of file
descriptors.

--
lfr
0/0

Attachment: pgpFV0BIfCfpo.pgp
Description: PGP signature

--
fedora-list mailing list
fedora-list@xxxxxxxxxx
To unsubscribe: https://www.redhat.com/mailman/listinfo/fedora-list

Relevant Pages

  • Re: attn:MVPs
    ... winsock dll to the managed .net environment. ... I have an asynchronous TCP socket that listens for data from ... The Slave should not initiate any connection requests/ send other messages ... EXCEPT the acknowledgement for the incoming messages from master, ...
    (microsoft.public.dotnet.framework)
  • Re: Socket Server... Why two?
    ... I hope you meant non-blocking way ... The accept just accepts a connection and returns as soon ... It is just an information to the application that now one more socket ... nothing to do without that data, you can do a blocking recv(). ...
    (comp.unix.programmer)
  • Re: Socket Server... Why two?
    ... I hope you meant non-blocking way ... The accept just accepts a connection and returns as soon ... It is just an information to the application that now one more socket ... nothing to do without that data, you can do a blocking recv(). ...
    (comp.unix.programmer)
  • Re: How can I tell when a remote TCP connection is closed?
    ... Recv only returns zero if the peer has ... to write to the socket and I get an broken pipe error. ... >I have a client with a TCP connection to a server. ... >need the code to be portable), is there a way that I can tell if the remote ...
    (microsoft.public.win32.programmer.networks)
  • Re: how to know if socket is still connected
    ... connection is still ok, if not will reconnect. ... If the server has closed the connection, then a recv() on the ... socket will raise an exception. ...
    (comp.lang.python)