SFML 3.0.1
Loading...
Searching...
No Matches
TcpSocket.hpp
Go to the documentation of this file.
1
2//
3// SFML - Simple and Fast Multimedia Library
4// Copyright (C) 2007-2025 Laurent Gomila (laurent@sfml-dev.org)
5//
6// This software is provided 'as-is', without any express or implied warranty.
7// In no event will the authors be held liable for any damages arising from the use of this software.
8//
9// Permission is granted to anyone to use this software for any purpose,
10// including commercial applications, and to alter it and redistribute it freely,
11// subject to the following restrictions:
12//
13// 1. The origin of this software must not be misrepresented;
14// you must not claim that you wrote the original software.
15// If you use this software in a product, an acknowledgment
16// in the product documentation would be appreciated but is not required.
17//
18// 2. Altered source versions must be plainly marked as such,
19// and must not be misrepresented as being the original software.
20//
21// 3. This notice may not be removed or altered from any source distribution.
22//
24
25#pragma once
26
28// Headers
30#include <SFML/Network/Export.hpp>
31
32#include <SFML/Network/Socket.hpp>
33
34#include <SFML/System/Time.hpp>
35
36#include <optional>
37#include <vector>
38
39#include <cstddef>
40#include <cstdint>
41
42
43 namespace sf
44{
45 class TcpListener;
46 class IpAddress;
47 class Packet;
48
53 class SFML_NETWORK_API TcpSocket : public Socket
54{
55 public:
60 TcpSocket();
61
72 [[nodiscard]] unsigned short getLocalPort() const;
73
85 [[nodiscard]] std::optional<IpAddress> getRemoteAddress() const;
86
98 [[nodiscard]] unsigned short getRemotePort() const;
99
118 [[nodiscard]] Status connect(IpAddress remoteAddress, unsigned short remotePort, Time timeout = Time::Zero);
119
129 void disconnect();
130
147 [[nodiscard]] Status send(const void* data, std::size_t size);
148
163 [[nodiscard]] Status send(const void* data, std::size_t size, std::size_t& sent);
164
181 [[nodiscard]] Status receive(void* data, std::size_t size, std::size_t& received);
182
199 [[nodiscard]] Status send(Packet& packet);
200
215 [[nodiscard]] Status receive(Packet& packet);
216
217 private:
218 friend class TcpListener;
219
224 struct PendingPacket
225 {
226 std::uint32_t size{};
227 std::size_t sizeReceived{};
228 std::vector<std::byte> data;
229 };
230
232 // Member data
234 PendingPacket m_pendingPacket;
235 std::vector<std::byte> m_blockToSendBuffer;
236};
237
238} // namespace sf
239
240
Export.hpp
SFML_NETWORK_API
#define SFML_NETWORK_API
Definition Network/Export.hpp:42
Socket.hpp
Time.hpp
sf::IpAddress
Encapsulate an IPv4 network address.
Definition IpAddress.hpp:49
sf::Packet
Utility class to build blocks of data to transfer over the network.
Definition Packet.hpp:49
sf::Socket::Status
Status
Status codes that may be returned by socket functions.
Definition Socket.hpp:49
sf::Socket::Socket
Socket(const Socket &)=delete
Deleted copy constructor.
sf::TcpListener
Socket that listens to new TCP connections.
Definition TcpListener.hpp:45
sf::TcpSocket::send
Status send(Packet &packet)
Send a formatted packet of data to the remote peer.
sf::TcpSocket::TcpListener
friend class TcpListener
Definition TcpSocket.hpp:218
sf::TcpSocket::send
Status send(const void *data, std::size_t size, std::size_t &sent)
Send raw data to the remote peer.
sf::TcpSocket::getRemoteAddress
std::optional< IpAddress > getRemoteAddress() const
Get the address of the connected peer.
sf::TcpSocket::connect
Status connect(IpAddress remoteAddress, unsigned short remotePort, Time timeout=Time::Zero)
Connect the socket to a remote peer.
sf::TcpSocket::TcpSocket
TcpSocket()
Default constructor.
sf::TcpSocket::receive
Status receive(void *data, std::size_t size, std::size_t &received)
Receive raw data from the remote peer.
sf::TcpSocket::getRemotePort
unsigned short getRemotePort() const
Get the port of the connected peer to which the socket is connected.
sf::TcpSocket::getLocalPort
unsigned short getLocalPort() const
Get the port to which the socket is bound locally.
sf::TcpSocket::receive
Status receive(Packet &packet)
Receive a formatted packet of data from the remote peer.
sf::TcpSocket::disconnect
void disconnect()
Disconnect the socket from its remote peer.
sf::TcpSocket::send
Status send(const void *data, std::size_t size)
Send raw data to the remote peer.
sf::Time
Represents a time value.
Definition Time.hpp:42
sf::Time::Zero
static const Time Zero
Predefined "zero" time value.
Definition Time.hpp:110
sf
Definition AudioResource.hpp:36