Files
NP_Midterm/include/Socket/Socket.hpp

45 lines
1.0 KiB
C++

#pragma once
#include "Socket/Address.hpp"
namespace Chattr {
struct Address;
class Socket {
public:
Socket() = default;
Socket(int domain, int type, int protocol);
~Socket();
void init(int domain, int type, int protocol);
void destruct();
operator SOCKET() const;
void set(const SOCKET);
void bind(sockaddr *__addr);
void bind(sockaddr *__addr, socklen_t __len);
//IPV4
void bind(sockaddr_in *__addr);
void bind(sockaddr_in *__addr, socklen_t __len);
//IPV6
void bind(sockaddr_in6 *__addr);
void bind(sockaddr_in6 *__addr, socklen_t __len);
int recvfrom(void *__restrict __buf, size_t __n, int __flags, struct Address& __addr);
int sendto(const void *__buf, size_t __n, int __flags, struct Address __addr);
Socket(const Socket&) = delete;
Socket(Socket&&);
Socket& operator=(const Socket&) = delete;
Socket& operator=(Socket&&);
struct Address bindAddr = {};
protected:
bool valid_ = false;
SOCKET sock_ = INVALID_SOCKET;
};
}