libassa 3.5.0
|
#include <UnConUDPSocket.h>
Public Member Functions | |
UnConUDPSocket () | |
Constructor. | |
~UnConUDPSocket () | |
Destructor. | |
int | recvfrom (char *buf_, int size_, Address *peer_addr_) |
recvfrom() function receives a message from connectionless-mode socket. | |
int | sendto (const char *buf_, const unsigned int size_, const Address *dest_addr_) |
sendto() function sends a message through connectionless-mode socket. | |
virtual int | in_avail () const |
This function returns the number of characters immediately available in the get area of the underlying Socketbuf buffer without making a system call. |
Definition at line 26 of file UnConUDPSocket.h.
ASSA::UnConUDPSocket::UnConUDPSocket | ( | ) |
Constructor.
Definition at line 70 of file UnConUDPSocket.h.
References ASSA::SOCKTRACE, and trace_with_mask.
: UDPSocket() { trace_with_mask ("UnConUDPSocket::UnConUDPSocket", SOCKTRACE); }
ASSA::UnConUDPSocket::~UnConUDPSocket | ( | ) |
Destructor.
Definition at line 76 of file UnConUDPSocket.h.
References ASSA::SOCKTRACE, and trace_with_mask.
{ trace_with_mask ("UnConUDPSocket::~UnConUDPSocket", SOCKTRACE); }
virtual int ASSA::UnConUDPSocket::in_avail | ( | ) | const [inline, virtual] |
This function returns the number of characters immediately available in the get area of the underlying Socketbuf buffer without making a system call.
Always return 0.
Implements ASSA::Socket.
Definition at line 66 of file UnConUDPSocket.h.
{ return 0; }
int UnConUDPSocket::recvfrom | ( | char * | buf_, |
int | size_, | ||
Address * | peer_addr_ | ||
) |
recvfrom() function receives a message from connectionless-mode socket.
It also permits the application to retrieve the source address of received data.
buf_ | points to buffer where the message should be stored |
size_ | buffer length is bytes |
peer_addr_ | pointer to the address structure where sending address is to be stored |
Definition at line 25 of file UnConUDPSocket.cpp.
References ASSA::Address::getAddress(), ASSA::UDPSocket::getHandler(), and ASSA::Address::getLength().
{ // ::recvfrom() can return 0 bytes which is not // considered an eof. Peer can advertise its address to // the server by sending 0 bytes length message. // // char self[] = "Socket::recvfro"; trace(self); // Setting saddr_len is crucial to proper ::recvfrom() operation. // If left improprely initialized, ::recvfrom() won't fill in peer's // address and won't report an error either. If SA ptr is passed to // recvfrom() along with uninitialized address len (or set to 0), // recvfrom() returns zeroed out address structure!!! int len; socklen_t pa_len = peer_addr_->getLength(); SA* pa = peer_addr_->getAddress(); #if defined (__CYGWIN32__) || defined (WIN32) len = ::recvfrom(getHandler(), buf_, size_, 0, pa, (int*)&pa_len); #else // posix/unix len = ::recvfrom(getHandler(), buf_, size_, 0, pa, &pa_len); #endif // Q: for UNIX domain socket, returned length will be essential to // remember and probably should be set in peer_addr_ by calling // setLength()..... return len; }
int UnConUDPSocket::sendto | ( | const char * | buf_, |
const unsigned int | size_, | ||
const Address * | dest_addr_ | ||
) |
sendto() function sends a message through connectionless-mode socket.
The message will be sent to the address specified by dest_addr_.
buf_ | pointer to the buffer containing the message to be sent |
size_ | the size of the message in bytes |
dest_addr_ | contains destination address |
Definition at line 60 of file UnConUDPSocket.cpp.
References ASSA::Address::getAddress(), ASSA::UDPSocket::getHandler(), and ASSA::Address::getLength().
{ return ::sendto (getHandler(), buf_, size_, 0, peer_addr_->getAddress(), peer_addr_->getLength()); }