Gamedev Framework (gf) 1.2.0
A C++17 framework for 2D games
TcpSocket.h
1/*
2 * Gamedev Framework (gf)
3 * Copyright (C) 2016-2022 Julien Bernard
4 *
5 * This software is provided 'as-is', without any express or implied
6 * warranty. In no event will the authors be held liable for any damages
7 * 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
11 * freely, subject to the following restrictions:
12 *
13 * 1. The origin of this software must not be misrepresented; you must not
14 * claim that you wrote the original software. If you use this software
15 * in a product, an acknowledgment in the product documentation would be
16 * appreciated but is not required.
17 * 2. Altered source versions must be plainly marked as such, and must not be
18 * misrepresented as being the original software.
19 * 3. This notice may not be removed or altered from any source distribution.
20 */
21#ifndef GF_TCP_SOCKET_H
22#define GF_TCP_SOCKET_H
23
24#include <cstdint>
25#include <string>
26
27#include "NetApi.h"
28#include "Socket.h"
29#include "Span.h"
30
31namespace gf {
32#ifndef DOXYGEN_SHOULD_SKIP_THIS
33inline namespace v1 {
34#endif
35 struct Packet;
36
50 class GF_NET_API TcpSocket : public Socket {
51 public:
57 TcpSocket() = default;
58
66 TcpSocket(const std::string& hostname, const std::string& service, SocketFamily family = SocketFamily::Unspec);
67
71 TcpSocket(const TcpSocket&) = delete;
72
76 TcpSocket& operator=(const TcpSocket&) = delete;
77
81 TcpSocket(TcpSocket&&) = default;
82
87
94
99
107
115
125
136
144
152
153 private:
154 TcpSocket(SocketHandle handle);
155
156 friend class TcpListener;
157 };
158
159#ifndef DOXYGEN_SHOULD_SKIP_THIS
160}
161#endif
162}
163
164#endif // GF_TCP_SOCKET_H
A socket address.
Definition: SocketAddress.h:78
A network socket.
Definition: Socket.h:41
A TCP listener.
Definition: TcpListener.h:58
A TCP socket.
Definition: TcpSocket.h:50
TcpSocket & operator=(TcpSocket &&)=default
Default move assignment.
TcpSocket()=default
Default constructor.
SocketStatus recvBytes(Span< uint8_t > buffer)
Receive a whole buffer from the socket.
~TcpSocket()
Destructor.
TcpSocket(TcpSocket &&)=default
Default move constructor.
SocketDataResult sendRawBytes(Span< const uint8_t > buffer)
Send some bytes over to the socket.
TcpSocket(const std::string &hostname, const std::string &service, SocketFamily family=SocketFamily::Unspec)
Full constructor.
SocketStatus sendBytes(Span< const uint8_t > buffer)
Send a whole buffer to the socket.
SocketDataResult recvRawBytes(Span< uint8_t > buffer)
Receive some bytes from the socket.
SocketStatus sendPacket(const Packet &packet)
Send a packet to the socket.
TcpSocket & operator=(const TcpSocket &)=delete
Deleted copy assignment.
SocketAddress getRemoteAddress() const
Get the remote address of the host.
TcpSocket(const TcpSocket &)=delete
Deleted copy constructor.
SocketStatus recvPacket(Packet &packet)
Receive a packet from the socket.
SocketFamily
A socket family.
Definition: SocketAddress.h:50
implementation-defined SocketHandle
A native socket handle.
Definition: SocketTypes.h:55
SocketStatus
The status of a socket operation.
Definition: SocketTypes.h:76
@ Unspec
Unspecified (either IPv4 or IPv6)
The namespace for gf classes.
A packet of bytes.
Definition: Packet.h:44
The result of a socket operation.
Definition: SocketTypes.h:89