since: 2.22

Declaration [src]

g_socket_receive (
  GSocket* socket,
  gchar* buffer,
  gsize size,
  GCancellable* cancellable,
  GError** error

Description [src]

Receive data (up to size bytes) from a socket. This is mainly used by connection-oriented sockets; it is identical to g_socket_receive_from() with address set to NULL.

For G_SOCKET_TYPE_DATAGRAM and G_SOCKET_TYPE_SEQPACKET sockets, g_socket_receive() will always read either 0 or 1 complete messages from the socket. If the received message is too large to fit in buffer, then the data beyond size bytes will be discarded, without any explicit indication that this has occurred.

For G_SOCKET_TYPE_STREAM sockets, g_socket_receive() can return any number of bytes, up to size. If more than size bytes have been received, the additional data will be returned in future calls to g_socket_receive().

If the socket is in blocking mode the call will block until there is some data to receive, the connection is closed, or there is an error. If there is no data available and the socket is in non-blocking mode, a G_IO_ERROR_WOULD_BLOCK error will be returned. To be notified when data is available, wait for the G_IO_IN condition.

On error -1 is returned and error is set accordingly.

Available since: 2.22



Type: An array of guint8

a buffer to read data into (which should be at least `size` bytes long).

The argument will be set by the function.
The length of the array is specified in the size argument.
The data is owned by the caller of the function.

Type: gsize

The number of bytes you want to read from the socket.


Type: GCancellable

A %GCancellable or NULL.

The argument can be NULL.
The data is owned by the caller of the function.

Type: GError **

The return location for a recoverable error.

The argument can be NULL.
If the return location is not NULL, then you must initialize it to a NULL GError*.
The argument will left initialized to NULL by the method if there are no errors.
In case of error, the argument will be set to a newly allocated GError; the caller will take ownership of the data, and be responsible for freeing it.

Return value

Type: gssize

Number of bytes read, or 0 if the connection was closed by the peer, or -1 on error.