8#include "Arp/System/Commons/Net/IpAddress.hpp"
9#include "Arp/System/Commons/Net/SocketType.hpp"
10#include "Arp/System/Commons/Net/PollMode.hpp"
11#include "Arp/System/Commons/Net/SelectMode.hpp"
12#include "Arp/System/Commons/Net/ShutdownMode.hpp"
13#include "Arp/System/Commons/Net/SocketError.hpp"
14#include "Arp/System/Commons/Net/SocketDomain.hpp"
15#include "Arp/System/Commons/Net/SocketOptionName.hpp"
18namespace Arp {
namespace System {
namespace Ve
23namespace Arp {
namespace System {
namespace Commons {
namespace Net
122 typedef std::shared_ptr<Socket>
Ptr;
618 return remoteIpAddress;
628 return this->isConnected;
Unified representation for ip address schemes.
Definition: IpAddress.hpp:14
Interface to realizes ethernet based communications.
Definition: Socket.hpp:118
SocketType GetSocketType(void) const
Returns the type of the socket.
Definition: Socket.hpp:601
SocketError Shutdown(void)
Shuts down a full-duplex connection.
SocketDomain GetSocketDomain(void) const
Returns the utilized domain.
Definition: Socket.hpp:606
int Send(const void *pBuffer, size_t length, SocketError &error)
Transmit data over the socket that is in a connected state.
SocketError SetSocketOption(SocketOptionName optionName, const void *optionValue, size_t optionLength)
Sets a single option on the socket.
SocketError SetOptionKeepAliveProbeInterval(int seconds)
Sets the interval time in between each Keep Alive probe, if the KeepAlive SocketOption is set to true...
SocketError GetOptionKeepAliveProbeInterval(int &seconds)
Gets the interval time in between each Keep Alive probe, if the KeepAlive SocketOption is set to true...
int Receive(void *pBuffer, size_t length, SocketError &error)
Reads data from connected socket.
Socket & operator=(const Socket &arg)=delete
Assignment operator.
SocketError Close(void)
Closes the socket. This ends all communication on the socket.
int Poll(PollMode mode, Milliseconds timeout, SocketError &error)
Checks if an i/o operation can be processed without blocking.
SocketError SetOptionLinger(bool enable, size_t timeout)
Sets the amount of time a socket resides in TIME_WAIT state after active close.
int SendTo(const void *pBuffer, size_t length, IpAddress ip4Adress, int port, SocketError &error)
Like Send but this method is to be used on sockets created with SocketType::Udp.
SocketError SetOptionNoDelay(bool enabled)
Enables/Disables no-delay for this socket.
Socket(const Socket &arg)=delete
Copy contructor.
Ptr Accept(IpAddress &ip4address, int &port, SocketError &error)
Accepts a pending connection request.
Socket(SocketType type, SocketDomain domain, SocketBlockingMode blockingMode)
Constructs an Socket instance.
SocketError GetOptionKeepAlive(bool &enabled) const
Checks if keep-alive is enabled.
SocketError GetOptionKeepAliveIdleTime(int &seconds)
Gets the time that the socket needs to be idle for, before the Keep Alive mechanism can start if the ...
SocketError GetOptionBroadcast(bool &enabled) const
Checks if broadcast is enabled.
IpAddress GetRemoteIpAddress(void) const
If this socket is connected this method returns the ip-address (v4).
Definition: Socket.hpp:616
SocketError SetOptionUserTimeout(size_t timeout_ms)
Sets the retransmission timeout of a socket. This only works on Linux.
SocketError SetOptionBlocking(bool enable)
Enables/disables the blocking mode of this socket..
SocketError SetOptionKeepAliveIdleTime(int seconds)
Sets the time that the socket needs to be idle for, before the Keep Alive mechanism can start if the ...
SocketError Shutdown(ShutdownMode mode)
Shuts down a full-duplex connection.
SocketError SetOptionKeepAliveProbeCount(int probeCount)
Sets the amount of probes to be sent, if the KeepAlive SocketOption is set to true.
SocketError GetOptionNoDelay(bool &enabled) const
Checks if no-delay is enabled.
SocketError Bind(const IpAddress &ip4Address, int port)
Binds the socket to a specific address and port combination.
SocketError GetSocketOption(SocketOptionName optionName, void *optionValue, size_t *optionLength) const
Returns current value of queried socket option.
int ReceiveFrom(void *pBuffer, size_t length, IpAddress &ip4Adress, int &port, SocketError &error)
Like Receive but this method is to be used on sockets created with SocketType::Udp.
bool Select(SelectMode mode, Microseconds timeout, SocketError &error)
Checks if an i/o operation can be performed without blocking the calling thread.
~Socket(void)
Destructs this instance and frees all resouces.
SocketError GetOptionKeepAliveProbeCount(int &probeCount)
Gets the amount of probes to be sent, if the KeepAlive SocketOption is set to true....
SocketError GetOptionReuseAddress(bool &enabled) const
Checks if reuse-address is enabled.
SocketError GetOptionLinger(bool &enable, size_t &timeout)
Returns the current linger options. For more information see Arp::System::Commons::Net::Socket::SetOp...
SocketError Connect(const IpAddress &ip4Address, int port)
Tries to connect with a remote socket.
SocketError Bind2(const IpAddress &ip4Address, int &port)
Binds the socket to a specific address and port combination.
int GetRemotePort(void) const
If this socket is connected this method returns the port of the connection.
Definition: Socket.hpp:621
bool IsBlocking(void) const
Checks if the socket is in blocking mode.
Definition: Socket.hpp:611
SocketError SetOptionReuseAddress(bool enabled)
Enables/Disables the reuse-address option for this socket.
SocketError SetOptionKeepAlive(bool enabled)
Enables/Disables the keep-alive option for this socket.
SocketError Listen(size_t backlog)
Marks this socket as a passive socket that accepts incoming connection requests.
bool IsConnected(void) const
Checks if this socket is connected with a remote peer.
Definition: Socket.hpp:626
std::shared_ptr< Socket > Ptr
Contextual definition of pointer type.
Definition: Socket.hpp:122
SocketError SetOptionBroadcast(bool enabled)
Enables/Disables broadcast for this socket.
SocketError GetOptionUserTimeout(size_t &timeout_ms)
Gets the retransmission timeout of a socket. This only works on Linux. For more information see Arp::...
Interface to realize TLS Connection over TCP
Definition: TlsSocket2.hpp:34
Definition: TlsSocket.hpp:40
Definition: ISocketService.hpp:13
std::chrono::milliseconds Milliseconds
The Arp Milliseconds unit class.
Definition: TypeSystem.h:52
std::chrono::microseconds Microseconds
The Arp Microseconds unit class.
Definition: TypeSystem.h:49
@ System
System components used by the System, Device, Plc or Io domains.
PollMode
This enum is used to specifiy the poll mode of the <cref name="Socket::Poll" > operation.
Definition: PollMode.hpp:15
SelectMode
Modes for Select call to check different data channels.
Definition: SelectMode.hpp:14
SocketDomain
Supported communication domains, selecting the protocol for communication.
Definition: SocketDomain.hpp:14
SocketType
Enumeration of supported socket types.
Definition: SocketType.hpp:14
ShutdownMode
This enum is used to specifiy the shutdown mode of the <cref name="Socket::Shutdown(ShutdownMode)" > ...
Definition: ShutdownMode.hpp:15
SocketError
Possible error codes for socket operation results.
Definition: SocketError.hpp:15
SocketOptionName
Specifies socket options to be set by the application. Copied from Eclr Socket Adaption
Definition: SocketOptionName.hpp:17
SocketBlockingMode
Supported blocking modes.
Definition: Socket.hpp:28
@ Blocking
Socket is in blocking mode, i.e. the Send*, Receive* and Accept methods will block if no data is avai...
@ NoneBlocking
Socket is in non-blocking mode, i.e. the Send*, Receive* and Accept methods will not block if no data...
Root namespace for the PLCnext API