given a socket file descriptor, is it possible to check if a UDP socket is connected or not?
int sock_fd = -1;
void create_socket() {
if ((sock_fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
perror("udp socket() failed");
exit(EXIT_FAILURE);
}
}
sockaddr_in create_sock_addr(const char* ip, const uint16_t port) {
sockaddr_in sock_addr{};
sock_addr.sin_family = AF_INET;
sock_addr.sin_port = htons(port);
if (inet_aton(ip, &sock_addr.sin_addr) == 0) {
perror("udp inet_aton() failed");
exit(EXIT_FAILURE);
}
return sock_addr;
}
void connect_socket(const char* ip, const uint16_t port) {
const sockaddr_in sock_addr = create_sock_addr(ip, port);
if (connect(sock_fd, reinterpret_cast<const sockaddr*>(&sock_addr), sizeof(sockaddr_in)) == -1) {
perror("udp connect() failed");
exit(EXIT_FAILURE);
}
}
bool is_sock_connected() {
// check sock_fd is connected or not
return true;
}
int main() {
create_socket();
connect_socket("127.0.0.1", 12345);
if (is_sock_connected()) {
// use send() function to send data
} else {
// use sendto() function to send data
}
close(sock_fd);
}