Guest User

Untitled

a guest
May 26th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.36 KB | None | 0 0
  1. //Data received
  2. else
  3. {
  4. std::cout << "Received: " << received << std::endl;
  5. std::string buff = buffer;
  6.  
  7. m_BufferMap[i].data += buff;
  8.  
  9. /*
  10. std::cout << ss.str() << std::endl;
  11.  
  12. //send to everyone connected
  13. for (int j = 0; j <= m_SocketMax; j++)
  14. {
  15. if (FD_ISSET(j, &m_SocketSet))
  16. {
  17. //except listener and whoever sent the message
  18. if (j != m_Listener && j != i) {
  19. this->Send(j, buffer);
  20. }
  21. }
  22. }
  23. */
  24. if (m_BufferMap[i].length == 0)
  25. {
  26. if (m_BufferMap[i].data.length() < 2) continue;
  27. /*
  28. Calculates the packet length from the first 2 bytes of the buffer
  29. */
  30. std::stringstream s;
  31. s << m_BufferMap[i].data.substr(0,1);
  32. unsigned char a,b;
  33. unsigned short n;
  34. s >> a;
  35. a -= 1; //remove 1 cause I added 1 when sending to avoid sending \0
  36. s.str("");
  37. s << m_BufferMap[i].data.substr(1,1);
  38. s >> b;
  39. b -= 1; //remove 1 cause I added 1 when sending to avoid sending \0
  40. n = ((a << 8) | b);
  41.  
  42. m_BufferMap[i].length = n;
  43. }
  44. std::cout << m_BufferMap[i].length << " == " << m_BufferMap[i].data.length() << std::endl;
  45. if (m_BufferMap[i].length == m_BufferMap[i].data.length())
  46. {
  47. std::cout << "lengths equal" << std::endl;
  48. types::Packet_t *packet = new types::Packet_t();
  49. packet->data = m_BufferMap[i].data.substr(2); //don't want first 2 bytes
  50. packet->address = m_SocketMap[i];
  51. //add packet to packet queue
  52. m_Packets.push_back(packet);
  53.  
  54. //clear the buffer
  55. m_BufferMap[i].length = 0;
  56. m_BufferMap[i].data = "";
  57. }
  58. else if (m_BufferMap[i].length < m_BufferMap[i].data.length())
  59. {
  60. types::Packet_t *packet = new types::Packet_t();
  61. //don't want first 2 bytes
  62. packet->data = m_BufferMap[i].data.substr(2,m_BufferMap[i].length-2);
  63. packet->address = m_SocketMap[i];
  64. //add packet to packet queue
  65. m_Packets.push_back(packet);
  66.  
  67. //remove old packet from buffer and
  68. //reset length to 0 so it gets fixed on next recv
  69. m_BufferMap[i].data = m_BufferMap[i].data.substr(m_BufferMap[i].length);
  70. m_BufferMap[i].length = 0;
  71. }
  72. }
Add Comment
Please, Sign In to add comment