socketio.hpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. #include <winsock2.h>
  15. #include <ws2tcpip.h>
  16. #pragma comment(lib, "ws2_32.lib")
  17. #endif
  18. class cppsocket{
  19. private:
  20. #ifdef _WIN32
  21. WSADATA wsa;
  22. SOCKET s;
  23. #else
  24. struct sockaddr_in serv_addr;
  25. int sock;
  26. #endif
  27. std::vector<char> buffer;
  28. public:
  29. const static std::size_t buffersize = 256;
  30. #ifdef _WIN32
  31. cppsocket(WSADATA d, SOCKET _s);
  32. #else
  33. cppsocket(sockaddr_in _serv_addr, int _sock);
  34. #endif
  35. cppsocket();
  36. cppsocket(const cppsocket& o) = delete;
  37. cppsocket(cppsocket&& o);
  38. cppsocket(const std::string& addr, unsigned int PORT);
  39. void close();
  40. int socket_id();
  41. void write(const std::string& message);
  42. void write(const std::vector<char>& message);
  43. std::vector<char> receive();
  44. cppsocket& operator=(cppsocket&& o);
  45. };
  46. class server_socket{
  47. private:
  48. #ifdef _WIN32
  49. WSADATA wsaData;
  50. int iResult;
  51. SOCKET ListenSocket = INVALID_SOCKET;
  52. #else
  53. int port_;
  54. int server_fd;
  55. struct sockaddr_in address;
  56. socklen_t addrlen;
  57. #endif
  58. public:
  59. int port();
  60. server_socket(int _port);
  61. cppsocket accept_connection();
  62. void close();
  63. };
  64. #endif