udp/tcp 비동기 통신은 현재 가능
This commit is contained in:
@@ -12,6 +12,7 @@ int Socket::init(int domain, int type, int protocol) {
|
||||
this->domain = domain;
|
||||
|
||||
sock = ::socket(domain, type, protocol);
|
||||
// sock = ::WSASocket(domain, type, protocol, NULL, 0, WSA_FLAG_OVERLAPPED);
|
||||
if (sock == INVALID_SOCKET) spdlog::critical("socket()");
|
||||
|
||||
valid_ = true;
|
||||
@@ -65,6 +66,26 @@ int Socket::bind(Address __addr) {
|
||||
return retVal;
|
||||
}
|
||||
|
||||
int Socket::connect(Address& serveraddr) {
|
||||
std::string addr_string = serveraddr;
|
||||
int retVal = -1;
|
||||
if (serveraddr.family == AF_INET)
|
||||
retVal = ::connect(sock, (const sockaddr*)&serveraddr.addr_in,
|
||||
serveraddr.length);
|
||||
else
|
||||
retVal = ::connect(sock, (const sockaddr*)&serveraddr.addr_in6,
|
||||
serveraddr.length);
|
||||
memcpy(&remoteAddr, &serveraddr, sizeof(Address));
|
||||
if (retVal == INVALID_SOCKET) {
|
||||
#ifdef _WIN32
|
||||
int err = WSAGetLastError();
|
||||
spdlog::error("connect() failed: WSA error {} (0x{:X})", err, err);
|
||||
#endif
|
||||
spdlog::error("connect()");
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
int Socket::recvfrom(void* __restrict __buf, size_t __n, int __flags,
|
||||
struct Address& __addr) {
|
||||
std::lock_guard<std::mutex> lock(readMutex);
|
||||
|
||||
Reference in New Issue
Block a user