CSFML - C binding of the Simple and Fast Multimedia Library

CSFML
Functions
TcpSocket.h File Reference
`#include <SFML/Network/Export.h>`
`#include <SFML/Network/IpAddress.h>`
`#include <SFML/Network/SocketStatus.h>`
`#include <SFML/Network/Types.h>`
`#include <SFML/System/Time.h>`
`#include <stddef.h>`

Go to the source code of this file.

## Functions
CSFML_NETWORK_API sfTcpSocket * | sfTcpSocket_create (void)
| Create a new TCP socket. More...
CSFML_NETWORK_API void | sfTcpSocket_destroy (sfTcpSocket *socket)
| Destroy a TCP socket. More...
CSFML_NETWORK_API void | sfTcpSocket_setBlocking (sfTcpSocket *socket, sfBool blocking)
| Set the blocking state of a TCP listener. More...
CSFML_NETWORK_API sfBool | sfTcpSocket_isBlocking (const sfTcpSocket *socket)
| Tell whether a TCP socket is in blocking or non-blocking mode. More...
CSFML_NETWORK_API unsigned short | sfTcpSocket_getLocalPort (const sfTcpSocket *socket)
| Get the port to which a TCP socket is bound locally. More...
CSFML_NETWORK_API sfIpAddress | sfTcpSocket_getRemoteAddress (const sfTcpSocket *socket)
| Get the address of the connected peer of a TCP socket. More...
CSFML_NETWORK_API unsigned short | sfTcpSocket_getRemotePort (const sfTcpSocket *socket)
| Get the port of the connected peer to which a TCP socket is connected. More...
CSFML_NETWORK_API sfSocketStatus | sfTcpSocket_connect (sfTcpSocket *socket, sfIpAddress remoteAddress, unsigned short remotePort, sfTime timeout)
| Connect a TCP socket to a remote peer. More...
CSFML_NETWORK_API void | sfTcpSocket_disconnect (sfTcpSocket *socket)
| Disconnect a TCP socket from its remote peer. More...
CSFML_NETWORK_API sfSocketStatus | sfTcpSocket_send (sfTcpSocket *socket, const void *data, size_t size)
| Send raw data to the remote peer of a TCP socket. More...
CSFML_NETWORK_API sfSocketStatus | sfTcpSocket_sendPartial (sfTcpSocket *socket, const void *data, size_t size, size_t *sent)
| Send raw data to the remote peer. More...
CSFML_NETWORK_API sfSocketStatus | sfTcpSocket_receive (sfTcpSocket *socket, void *data, size_t size, size_t *received)
| Receive raw data from the remote peer of a TCP socket. More...
CSFML_NETWORK_API sfSocketStatus | sfTcpSocket_sendPacket (sfTcpSocket *socket, sfPacket *packet)
| Send a formatted packet of data to the remote peer of a TCP socket. More...
CSFML_NETWORK_API sfSocketStatus | sfTcpSocket_receivePacket (sfTcpSocket *socket, sfPacket *packet)
| Receive a formatted packet of data from the remote peer. More...

## Function Documentation

## ◆ sfTcpSocket_connect()

CSFML_NETWORK_API sfSocketStatus sfTcpSocket_connect | ( | sfTcpSocket * | socket,
|  | sfIpAddress | remoteAddress,
|  | unsigned short | remotePort,
|  | sfTime | timeout
| ) |  |

Connect a TCP socket to a remote peer.

In blocking mode, this function may take a while, especially if the remote peer is not reachable. The last parameter allows you to stop trying to connect after a given timeout. If the socket was previously connected, it is first disconnected.

Parameters

  socket | TCP socket object
  remoteAddress | Address of the remote peer
  remotePort | Port of the remote peer
  timeout | Maximum time to wait

Returns
  Status code

## ◆ sfTcpSocket_create()

CSFML_NETWORK_API sfTcpSocket* sfTcpSocket_create | ( | void |  | ) |

Create a new TCP socket.

Returns
  A new sfTcpSocket object

## ◆ sfTcpSocket_destroy()

CSFML_NETWORK_API void sfTcpSocket_destroy | ( | sfTcpSocket * | socket | ) |

Destroy a TCP socket.

Parameters

  socket | TCP socket to destroy

## ◆ sfTcpSocket_disconnect()

CSFML_NETWORK_API void sfTcpSocket_disconnect | ( | sfTcpSocket * | socket | ) |

Disconnect a TCP socket from its remote peer.

This function gracefully closes the connection. If the socket is not connected, this function has no effect.

Parameters

  socket | TCP socket object

## ◆ sfTcpSocket_getLocalPort()

CSFML_NETWORK_API unsigned short sfTcpSocket_getLocalPort | ( | const sfTcpSocket * | socket | ) |

Get the port to which a TCP socket is bound locally.

If the socket is not connected, this function returns 0.

Parameters

  socket | TCP socket object

Returns
  Port to which the socket is bound

## ◆ sfTcpSocket_getRemoteAddress()

CSFML_NETWORK_API sfIpAddress sfTcpSocket_getRemoteAddress | ( | const sfTcpSocket * | socket | ) |

Get the address of the connected peer of a TCP socket.

It the socket is not connected, this function returns sfIpAddress_None.

Parameters

  socket | TCP socket object

Returns
  Address of the remote peer

## ◆ sfTcpSocket_getRemotePort()

CSFML_NETWORK_API unsigned short sfTcpSocket_getRemotePort | ( | const sfTcpSocket * | socket | ) |

Get the port of the connected peer to which a TCP socket is connected.

If the socket is not connected, this function returns 0.

Parameters

  socket | TCP socket object

Returns
  Remote port to which the socket is connected

## ◆ sfTcpSocket_isBlocking()

CSFML_NETWORK_API sfBool sfTcpSocket_isBlocking | ( | const sfTcpSocket * | socket | ) |

Tell whether a TCP socket is in blocking or non-blocking mode.

Parameters

  socket | TCP socket object

Returns
  sfTrue if the socket is blocking, sfFalse otherwise

## ◆ sfTcpSocket_receive()

CSFML_NETWORK_API sfSocketStatus sfTcpSocket_receive | ( | sfTcpSocket * | socket,
|  | void * | data,
|  | size_t | size,
|  | size_t * | received
| ) |  |

Receive raw data from the remote peer of a TCP socket.

In blocking mode, this function will wait until some bytes are actually received. This function will fail if the socket is not connected.

Parameters

  socket | TCP socket object
  data | Pointer to the array to fill with the received bytes
  size | Maximum number of bytes that can be received
  received | This variable is filled with the actual number of bytes received

Returns
  Status code

## ◆ sfTcpSocket_receivePacket()

CSFML_NETWORK_API sfSocketStatus sfTcpSocket_receivePacket | ( | sfTcpSocket * | socket,
|  | sfPacket * | packet
| ) |  |

Receive a formatted packet of data from the remote peer.

In blocking mode, this function will wait until the whole packet has been received. This function will fail if the socket is not connected.

Parameters

  socket | TCP socket object
  packet | Packet to fill with the received data

Returns
  Status code

## ◆ sfTcpSocket_send()

CSFML_NETWORK_API sfSocketStatus sfTcpSocket_send | ( | sfTcpSocket * | socket,
|  | const void * | data,
|  | size_t | size
| ) |  |

Send raw data to the remote peer of a TCP socket.

To be able to handle partial sends over non-blocking sockets, use the sfTcpSocket_sendPartial(sfTcpSocket*, const void*, std::size_t, size_t*) overload instead. This function will fail if the socket is not connected.

Parameters

  socket | TCP socket object
  data | Pointer to the sequence of bytes to send
  size | Number of bytes to send

Returns
  Status code

## ◆ sfTcpSocket_sendPacket()

CSFML_NETWORK_API sfSocketStatus sfTcpSocket_sendPacket | ( | sfTcpSocket * | socket,
|  | sfPacket * | packet
| ) |  |

Send a formatted packet of data to the remote peer of a TCP socket.

In non-blocking mode, if this function returns sfSocketPartial, you must retry sending the same unmodified packet before sending anything else in order to guarantee the packet arrives at the remote peer uncorrupted. This function will fail if the socket is not connected.

Parameters

  socket | TCP socket object
  packet | Packet to send

Returns
  Status code

## ◆ sfTcpSocket_sendPartial()

CSFML_NETWORK_API sfSocketStatus sfTcpSocket_sendPartial | ( | sfTcpSocket * | socket,
|  | const void * | data,
|  | size_t | size,
|  | size_t * | sent
| ) |  |

Send raw data to the remote peer.

This function will fail if the socket is not connected.

Parameters

  socket | TCP socket object
  data | Pointer to the sequence of bytes to send
  size | Number of bytes to send
  sent | The number of bytes sent will be written here

Returns
  Status code

## ◆ sfTcpSocket_setBlocking()

CSFML_NETWORK_API void sfTcpSocket_setBlocking | ( | sfTcpSocket * | socket,
|  | sfBool | blocking
| ) |  |

Set the blocking state of a TCP listener.

In blocking mode, calls will not return until they have completed their task. For example, a call to sfTcpSocket_receive in blocking mode won't return until new data was actually received. In non-blocking mode, calls will always return immediately, using the return code to signal whether there was data available or not. By default, all sockets are blocking.

Parameters

  socket | TCP socket object
  blocking | sfTrue to set the socket as blocking, sfFalse for non-blocking