udpsocket.hpp 954 B

12345678910111213141516171819202122232425262728293031323334353637
  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::string content;
  18. packet(const std::string& content, const std::string& dest, int port);
  19. void setContent(const std::string&);
  20. };
  21. class udpsocket {
  22. struct sockaddr_in addr;
  23. int s, slen = sizeof(addr);
  24. int m_port;
  25. public:
  26. udpsocket(int port);
  27. udpsocket(const udpsocket&) = delete;
  28. udpsocket& operator=(const udpsocket&) = delete;
  29. udpsocket(udpsocket&&);
  30. udpsocket& operator=(udpsocket&&);
  31. void write(const std::string&,const std::string& dest, int port)const;
  32. void write(const std::vector<char>&,const std::string& dest, int port)const;
  33. std::vector<char> receive()const;
  34. void close();
  35. int port()const;
  36. };