Added connected boolean to UDP socket class and maybe fixed issue with sockfd error

This commit is contained in:
maxbyte9p
2024-05-09 19:46:46 -04:00
parent eff1c39a1f
commit a9f34f4661
2 changed files with 24 additions and 10 deletions

View File

@@ -84,6 +84,7 @@ namespace Socket
socklen_t self_addr_len = sizeof(self_addr);
sockaddr_in_t peer_addr{};
socklen_t peer_addr_len = sizeof(peer_addr);
bool connected = false;
};

View File

@@ -14,8 +14,9 @@ namespace Socket
{
this->Close();
sock = (int)::socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (sock < 0)
CheckErrors_socket(errno);
if (sock < 0) {
CheckErrors_socket(errno);
}
if (this->IsClosed()) {
//throw error();
}
@@ -23,15 +24,22 @@ namespace Socket
int UdpSocket::Close()
{
int ret;
if (!this->IsClosed()){
#ifdef _WIN32
int ret = ::shutdown(sock, SD_BOTH);
#else
int ret = ::shutdown(sock, SHUT_RDWR);
#endif
if (ret < 0)
CheckErrors_shutdown(errno);
if (Connected()) {
#ifdef _WIN32
ret = ::shutdown(sock, SD_BOTH);
#else
ret = ::shutdown(sock, SHUT_RDWR);
#endif
std::cout << ret << std::endl;
if (ret < 0) {
std::cout << "SHIT\n";
CheckErrors_shutdown(errno);
}
}
#ifdef _WIN32
ret = ::closesocket(sock);
#else
@@ -93,6 +101,7 @@ namespace Socket
int ret = ::connect(sock, (sockaddr_t*)&peer_addr, peer_addr_len);
if (ret < 0)
CheckErrors_connect(errno);
connected = true;
}
void UdpSocket::Connect(u16 port)
{
@@ -102,6 +111,10 @@ namespace Socket
}
bool UdpSocket::Connected() const {
return this->connected;
}
struct ReceivedPacket
{
IPAddress Sender;