since: 2.22


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


Tries to send size bytes from buffer on the socket. This is mainly used by connection-oriented sockets; it is identical to g_socket_send_to() with address set to NULL.

If the socket is in blocking mode the call will block until there is space for the data in the socket queue. If there is no space available and the socket is in non-blocking mode a G_IO_ERROR_WOULD_BLOCK error will be returned. To be notified when space is available, wait for the G_IO_OUT condition. Note though that you may still receive G_IO_ERROR_WOULD_BLOCK from g_socket_send() even if you were previously notified of a G_IO_OUT condition. (On Windows in particular, this is very common due to the way the underlying APIs work.)

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

Available since: 2.22



Type: An array of guint8

The buffer containing the data to send.

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 to send.


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 written (which may be less than size), or -1 on error.