#include <receiver.h>
Public Member Functions | |
| Receiver (wxString remoteAddr=wxT("127.0.0.1"), unsigned short remotePort=2627, unsigned short localPort=2627, unsigned bufferLength=8192) | |
| Constructor. | |
| ~Receiver () | |
| Destructor. | |
| void | UpdateSocket (wxString remoteAddr, unsigned short remotePort, unsigned short localPort) |
| Rebuild Socket if some parameters has changed. | |
| bool | Receive () |
| Receive Datagram (if it is available). | |
| unsigned | GetPacketLength () |
| returns length of the packet (after last Receive() call) | |
| char * | GetPacket () |
| returns pointer to packet buffer | |
| void | ResizeBuffer (unsigned short length) |
| Changes size of recieving buffer. | |
| Receiver (wxString remoteAddr=wxT("127.0.0.1"), unsigned short remotePort=2627, unsigned short localPort=2627, unsigned bufferLength=8192) | |
| Constructor. | |
| ~Receiver () | |
| Destructor. | |
| void | UpdateSocket (wxString remoteAddr, unsigned short remotePort, unsigned short localPort) |
| Rebuild Socket if some parameters has changed. | |
| bool | Receive () |
| Receive Datagram (if it is available). | |
| unsigned | GetPacketLength () |
| returns length of the packet (after last Receive() call) | |
| char * | GetPacket () |
| returns pointer to packet buffer | |
| void | ResizeBuffer (unsigned short length) |
| Changes size of recieving buffer. | |
Private Attributes | |
| wxIPV4address | local |
| Local IP address or hostname and port. | |
| wxIPV4address | remote |
| Remote IP address or hostname and port. | |
| wxDatagramSocket * | recvSocket |
| the UDP socket | |
| char * | packetBuffer |
| Pointer to dynamic array buffer. | |
| unsigned | packetMaxLength |
Maximum length of packet (size of packetBuffer). | |
| unsigned | packetLength |
| Length of the last received packet. | |
| wxDatagramSocket * | recvSocket |
| the UDP socket | |
| char * | packetBuffer |
| Pointer to dynamic array buffer. | |
This clas use a wxDatagramSocket to receive udp Datagrams. It also uses a byte buffer to save and accept data from socket
If Receiver is not working (in the sence it is not receiving any datagrams, consider this:
Definition at line 26 of file receiver.h.
| Receiver::Receiver | ( | wxString | remoteAddr = wxT("127.0.0.1"), |
|
| unsigned short | remotePort = 2627, |
|||
| unsigned short | localPort = 2627, |
|||
| unsigned | bufferLength = 8192 | |||
| ) |
Constructor.
| remoteAddr | IP address or hostname of remote peer | |
| remotePort | Port (service) of the peer | |
| localPort | Port (service) that is module listening on | |
| bufferLength | sizze of the buffer to be created |
Definition at line 13 of file receiver.cpp.
00014 { 00015 packetBuffer = new char[bufferLength + 1]; 00016 packetMaxLength = bufferLength; 00017 00018 local.AnyAddress(); 00019 local.Service(localPort); 00020 //remote.Hostname(remoteAddr); 00021 remote.AnyAddress(); 00022 remote.Service(remotePort); 00023 00024 recvSocket = new wxDatagramSocket(local, wxSOCKET_NOWAIT); 00025 if (recvSocket->Error()) LOGERROR(wxT("<Tracking> Socket error while creating")); 00026 // this->recvSocket->SetEventHandler(*this, SocketHandlingID); 00027 // this->recvSocket->SetNotify(wxSOCKET_OUTPUT_FLAG | wxSOCKET_INPUT_FLAG | wxSOCKET_CONNECTION_FLAG| wxSOCKET_LOST_FLAG); 00028 // this->recvSocket->Notify(true); 00029 // this->Connect(wxEVT_SOCKET, wxSocketEventHandler(Receiver::ProcessEvtSocket), NULL, this); 00030 }
| Receiver::~Receiver | ( | ) |
Destructor.
Deletes buffer array so it can't be used from the out of the class Socket is also destroyed.
Definition at line 31 of file receiver.cpp.
00032 { 00033 delete [] packetBuffer; 00034 recvSocket->Destroy(); 00035 }
| Receiver::Receiver | ( | wxString | remoteAddr = wxT("127.0.0.1"), |
|
| unsigned short | remotePort = 2627, |
|||
| unsigned short | localPort = 2627, |
|||
| unsigned | bufferLength = 8192 | |||
| ) |
Constructor.
| remoteAddr | IP address or hostname of remote peer | |
| remotePort | Port (service) of the peer | |
| localPort | Port (service) that is module listening on | |
| bufferLength | sizze of the buffer to be created |
| Receiver::~Receiver | ( | ) |
Destructor.
Deletes buffer array so it can't be used from the out of the class Socket is also destroyed.
| void Receiver::UpdateSocket | ( | wxString | remoteAddr, | |
| unsigned short | remotePort, | |||
| unsigned short | localPort | |||
| ) |
Rebuild Socket if some parameters has changed.
| remoteAddr | IP address or hostname of remote peer | |
| remotePort | Port (service) of the peer | |
| localPort | Port (service) that is module listening on |
Definition at line 36 of file receiver.cpp.
00037 { 00038 recvSocket->Destroy(); 00039 local.AnyAddress(); 00040 local.Service(localPort); 00041 //remote.Hostname(remoteAddr); 00042 remote.AnyAddress(); 00043 remote.Service(remotePort); 00044 00045 00046 recvSocket = new wxDatagramSocket(local, wxSOCKET_NOWAIT); 00047 if (recvSocket->Error()) LOGERROR(wxT("<Tracking> Socket error while updating")); 00048 LOGERROR(wxT("<Tracking> Socket recreated")); 00049 00050 }
| bool Receiver::Receive | ( | ) |
Receive Datagram (if it is available).
Definition at line 51 of file receiver.cpp.
00052 { 00053 // recvSocket->WaitForRead(0, 10); 00054 // recvSocket->SetTimeout(1); 00055 00056 recvSocket->RecvFrom(remote, packetBuffer, packetMaxLength); 00057 packetLength = recvSocket->LastCount(); 00058 if (packetLength != 0) 00059 { 00060 if (packetLength > packetMaxLength){ LOGERROR(wxT("<Tracking> Too long datagram received!")); return false;}; 00061 if (packetLength == packetMaxLength){ LOGWARNING(wxT("<Tracking> Maximum amount of data on receiver buffer. Consider larger")); return false;}; 00062 packetBuffer[packetLength] = 0; 00063 return true; 00064 } 00065 // if (recvSocket->Error()){ LOGERROR(wxT("<Tracking> Socket Error - no data received.")); return false;} 00066 return false; 00067 }
| unsigned Receiver::GetPacketLength | ( | ) | [inline] |
returns length of the packet (after last Receive() call)
Definition at line 65 of file receiver.h.
00065 {return packetLength;}
| char* Receiver::GetPacket | ( | ) | [inline] |
returns pointer to packet buffer
Definition at line 67 of file receiver.h.
00067 {return packetBuffer;}
| void Receiver::ResizeBuffer | ( | unsigned short | length | ) |
Changes size of recieving buffer.
| length | - use maximum size of Packet you suppose to receive. |
Definition at line 68 of file receiver.cpp.
00069 { 00070 if (length != packetMaxLength) 00071 { 00072 packetMaxLength = length; 00073 delete [] packetBuffer; 00074 packetBuffer = new char[length + 1]; 00075 } 00076 }
| void Receiver::UpdateSocket | ( | wxString | remoteAddr, | |
| unsigned short | remotePort, | |||
| unsigned short | localPort | |||
| ) |
Rebuild Socket if some parameters has changed.
| remoteAddr | IP address or hostname of remote peer | |
| remotePort | Port (service) of the peer | |
| localPort | Port (service) that is module listening on |
| bool Receiver::Receive | ( | ) |
Receive Datagram (if it is available).
| unsigned Receiver::GetPacketLength | ( | ) | [inline] |
returns length of the packet (after last Receive() call)
Definition at line 65 of file receiver.h.
00065 {return packetLength;}
| char* Receiver::GetPacket | ( | ) | [inline] |
returns pointer to packet buffer
Definition at line 67 of file receiver.h.
00067 {return packetBuffer;}
| void Receiver::ResizeBuffer | ( | unsigned short | length | ) |
Changes size of recieving buffer.
| length | - use maximum size of Packet you suppose to receive. |
wxIPV4address Receiver::local [private] |
wxIPV4address Receiver::remote [private] |
wxDatagramSocket* Receiver::recvSocket [private] |
char* Receiver::packetBuffer [private] |
unsigned Receiver::packetMaxLength [private] |
unsigned Receiver::packetLength [private] |
wxDatagramSocket* Receiver::recvSocket [private] |
char* Receiver::packetBuffer [private] |
1.5.5