Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Data received
- else
- {
- std::cout << "Received: " << received << std::endl;
- std::string buff = buffer;
- m_BufferMap[i].data += buff;
- /*
- std::cout << ss.str() << std::endl;
- //send to everyone connected
- for (int j = 0; j <= m_SocketMax; j++)
- {
- if (FD_ISSET(j, &m_SocketSet))
- {
- //except listener and whoever sent the message
- if (j != m_Listener && j != i) {
- this->Send(j, buffer);
- }
- }
- }
- */
- if (m_BufferMap[i].length == 0)
- {
- if (m_BufferMap[i].data.length() < 2) continue;
- /*
- Calculates the packet length from the first 2 bytes of the buffer
- */
- std::stringstream s;
- s << m_BufferMap[i].data.substr(0,1);
- unsigned char a,b;
- unsigned short n;
- s >> a;
- a -= 1; //remove 1 cause I added 1 when sending to avoid sending \0
- s.str("");
- s << m_BufferMap[i].data.substr(1,1);
- s >> b;
- b -= 1; //remove 1 cause I added 1 when sending to avoid sending \0
- n = ((a << 8) | b);
- m_BufferMap[i].length = n;
- }
- std::cout << m_BufferMap[i].length << " == " << m_BufferMap[i].data.length() << std::endl;
- if (m_BufferMap[i].length == m_BufferMap[i].data.length())
- {
- std::cout << "lengths equal" << std::endl;
- types::Packet_t *packet = new types::Packet_t();
- packet->data = m_BufferMap[i].data.substr(2); //don't want first 2 bytes
- packet->address = m_SocketMap[i];
- //add packet to packet queue
- m_Packets.push_back(packet);
- //clear the buffer
- m_BufferMap[i].length = 0;
- m_BufferMap[i].data = "";
- }
- else if (m_BufferMap[i].length < m_BufferMap[i].data.length())
- {
- types::Packet_t *packet = new types::Packet_t();
- //don't want first 2 bytes
- packet->data = m_BufferMap[i].data.substr(2,m_BufferMap[i].length-2);
- packet->address = m_SocketMap[i];
- //add packet to packet queue
- m_Packets.push_back(packet);
- //remove old packet from buffer and
- //reset length to 0 so it gets fixed on next recv
- m_BufferMap[i].data = m_BufferMap[i].data.substr(m_BufferMap[i].length);
- m_BufferMap[i].length = 0;
- }
- }
Add Comment
Please, Sign In to add comment