socketio.hpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. std::vector<char> buffer;
  24. #else
  25. struct sockaddr_in serv_addr;
  26. int sock;
  27. std::vector<char> buffer;
  28. #endif
  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 std::string& addr, unsigned int PORT);
  38. void close();
  39. int socket_id();
  40. void write(const std::string& message);
  41. void write(const std::vector<char>& message);
  42. std::vector<char> receive();
  43. };
  44. class server_socket{
  45. private:
  46. #ifdef _WIN32
  47. WSADATA wsaData;
  48. int iResult;
  49. SOCKET ListenSocket = INVALID_SOCKET;
  50. #else
  51. int port_;
  52. int server_fd;
  53. struct sockaddr_in address;
  54. socklen_t addrlen;
  55. #endif
  56. public:
  57. int port();
  58. server_socket(int _port);
  59. cppsocket accept_connection();
  60. void close();
  61. };
  62. #endif