### Method

# Gio Socket send

since: 2.22

#### Declaration

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

#### Description

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

#### Parameters

`buffer`

  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 method.

`size`

  Type: `gsize`

  The number of bytes to send.

`cancellable`

  Type: `GCancellable`

  A %GCancellable or `NULL`.

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

`error`

  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 be 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.