socketio.hpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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 = 1024;
  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=(const cppsocket& o) = delete;
  46. cppsocket& operator=(cppsocket&& o);
  47. };
  48. class server_socket {
  49. private:
  50. #ifdef _WIN32
  51. WSADATA wsaData;
  52. int iResult;
  53. SOCKET ListenSocket = INVALID_SOCKET;
  54. #else
  55. int port_;
  56. int server_fd;
  57. struct sockaddr_in address;
  58. socklen_t addrlen;
  59. #endif
  60. public:
  61. server_socket(const server_socket& o) = delete;
  62. server_socket(server_socket&& o);
  63. int port();
  64. server_socket(int _port);
  65. cppsocket accept_connection();
  66. void close();
  67. server_socket& operator=(const server_socket& o) = delete;
  68. server_socket& operator=(server_socket&& o);
  69. };
  70. #endif