Added connected boolean to UDP socket class and maybe fixed issue with sockfd error
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
};
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user