socketio.hpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #ifndef SOCKETIO_HPP
  2. #define SOCKETIO_HPP
  3. #include <string>
  4. #include <cstring>
  5. #include <vector>
  6. #include <iostream>
  7. #include <exception>
  8. #include <cmath>
  9. #include <stdexcept>
  10. #ifndef _WIN32
  11. #include <sys/socket.h>
  12. #include <netinet/in.h>
  13. #else
  14. #define _WINSOCK_DEPRECATED_NO_WARNINGS
  15. #include <winsock2.h>
  16. #include <ws2tcpip.h>
  17. #pragma comment(lib, "ws2_32.lib")
  18. #endif
  19. class cppsocket {
  20. private:
  21. #ifdef _WIN32
  22. WSADATA wsa;
  23. SOCKET s;
  24. #else
  25. struct sockaddr_in serv_addr;
  26. int sock;
  27. #endif
  28. std::vector<char> buffer;
  29. public:
  30. const static std::size_t buffersize = 256;
  31. #ifdef _WIN32
  32. cppsocket(WSADATA d, SOCKET _s);
  33. #else
  34. cppsocket(sockaddr_in _serv_addr, int _sock);
  35. #endif
  36. cppsocket();
  37. cppsocket(const cppsocket& o) = delete;
  38. cppsocket(cppsocket&& o);
  39. cppsocket(const std::string& addr, unsigned int PORT);
  40. void close();
  41. int socket_id();
  42. void write(const std::string& message);
  43. void write(const std::vector<char>& message);
  44. std::vector<char> receive();
  45. cppsocket& operator=(cppsocket&& o);
  46. };
  47. class server_socket {
  48. private:
  49. #ifdef _WIN32
  50. WSADATA wsaData;
  51. int iResult;
  52. SOCKET ListenSocket = INVALID_SOCKET;
  53. #else
  54. int port_;
  55. int server_fd;
  56. struct sockaddr_in address;
  57. socklen_t addrlen;
  58. #endif
  59. public:
  60. int port();
  61. server_socket(int _port);
  62. cppsocket accept_connection();
  63. void close();
  64. };
  65. #endif