-
Notifications
You must be signed in to change notification settings - Fork 185
/
TcpServer.h
65 lines (49 loc) · 2.24 KB
/
TcpServer.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#ifndef STK_TCPSERVER_H
#define STK_TCPSERVER_H
#include "Socket.h"
namespace stk {
/***************************************************/
/*! \class TcpServer
\brief STK TCP socket server class.
This class provides a uniform cross-platform TCP socket server
interface. Methods are provided for reading or writing data
buffers to/from connections.
TCP sockets are reliable and connection-oriented. A TCP socket
server must accept a connection from a TCP client before data can
be sent or received. Data delivery is guaranteed in order,
without loss, error, or duplication. That said, TCP transmissions
tend to be slower than those using the UDP protocol and data sent
with multiple \e write() calls can be arbitrarily combined by the
underlying system.
The user is responsible for checking the values
returned by the read/write methods. Values
less than or equal to zero indicate a closed
or lost connection or the occurence of an error.
by Perry R. Cook and Gary P. Scavone, 1995--2023.
*/
/***************************************************/
class TcpServer : public Socket
{
public:
//! Default constructor creates a local socket server on port 2006 (or the specified port number).
/*!
An StkError will be thrown if a socket error occurs during instantiation.
*/
TcpServer( int port = 2006 );
//! The class destructor closes the socket instance, breaking any existing connections.
~TcpServer();
//! Extract the first pending connection request from the queue and create a new connection, returning the descriptor for the accepted socket.
/*!
If no connection requests are pending and the socket has not
been set non-blocking, this function will block until a connection
is present. If an error occurs, -1 is returned.
*/
int accept( void );
//! Write a buffer over the socket connection. Returns the number of bytes written or -1 if an error occurs.
int writeBuffer(const void *buffer, long bufferSize, int flags = 0);
//! Read a buffer from the socket connection, up to length \e bufferSize. Returns the number of bytes read or -1 if an error occurs.
int readBuffer(void *buffer, long bufferSize, int flags = 0);
protected:
};
} // stk namespace
#endif