Learn R Programming

RGtk2 (version 2.20.31)

gSocketClose: gSocketClose

Description

Closes the socket, shutting down any active connection.

Usage

gSocketClose(object, .errwarn = TRUE)

Arguments

object
.errwarn
Whether to issue a warning on error or fail silently

Value

A list containing the following elements:
retval
[logical] TRUE on success, FALSE on error
error
GError for error reporting, or NULL to ignore.

Details

Closing a socket does not wait for all outstanding I/O operations to finish, so the caller should not rely on them to be guaranteed to complete even if the close returns with no error. Once the socket is closed, all other operations will return G_IO_ERROR_CLOSED. Closing a socket multiple times will not return an error. Sockets will be automatically closed when the last reference is dropped, but you might want to call this function to make sure resources are released as early as possible. Beware that due to the way that TCP works, it is possible for recently-sent data to be lost if either you close a socket while the G_IO_IN condition is set, or else if the remote connection tries to send something to you after you close the socket but before it has finished reading all of the data you sent. There is no easy generic way to avoid this problem; the easiest fix is to design the network protocol such that the client will never send data "out of turn". Another solution is for the server to half-close the connection by calling gSocketShutdown with only the shutdown.write flag set, and then wait for the client to notice this and close its side of the connection, after which the server can safely call gSocketClose. (This is what GTcpConnection does if you call gTcpConnectionSetGracefulDisconnect. But of course, this only works if the client will close its connection after the server does.) Since 2.22