udpsocket.hpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include <arpa/inet.h>
  2. #include <iostream>
  3. #include <stdexcept>
  4. #include <netdb.h>
  5. #include <string>
  6. #include <cstring>
  7. #include <cstdint>
  8. #include <sys/socket.h>
  9. #include <unistd.h>
  10. #include <netinet/in.h>
  11. #include <sys/types.h>
  12. #include <vector>
  13. struct packet{
  14. struct sockaddr_in addr;
  15. int m_port;
  16. std::uint64_t checksum[4];
  17. std::uint64_t id;
  18. std::vector<char> content;
  19. packet(const std::vector<char>& content, const std::string& dest, int port);
  20. packet(const std::string& content, const std::string& dest, int port);
  21. void setContent(const std::vector<char>&);
  22. };
  23. class udpsocket {
  24. struct sockaddr_in addr;
  25. int s, slen = sizeof(addr);
  26. int m_port;
  27. public:
  28. udpsocket(int port);
  29. udpsocket(const udpsocket&) = delete;
  30. udpsocket& operator=(const udpsocket&) = delete;
  31. udpsocket(udpsocket&&);
  32. udpsocket& operator=(udpsocket&&);
  33. void write(const std::string&,const std::string& dest, int port)const;
  34. void write(const std::vector<char>&,const std::string& dest, int port)const;
  35. void write(const packet&)const;
  36. std::vector<char> receive()const;
  37. void close();
  38. int port()const;
  39. };