daniel.buide Posted April 18, 2024 Posted April 18, 2024 Hello, I have a problem for my paradigm with sockets. I need to open two sockets. One Listen in X port destination, this is normal and well implemented, and the other one opened and listening to the local port, of the first socket, opened by the SO . I tried to look for a function that returns this port but there is no one. I saw there was a opened ticket that expose this problem in 2018 and there isn't solution yet. I'm working with Unigine 2.18. So, will have unigine solved this problem soon? Thanks.
cash-metall Posted April 18, 2024 Posted April 18, 2024 Hello! Could you elaborate more on what "and the other one opened and listening to the local port, of the first socket, opened by the SO" means? Perhaps you could draw a schema or provide pseudocode for what you want to do? What ticket from 2018 are you referring to?
daniel.buide Posted April 19, 2024 Author Posted April 19, 2024 Hello, I refered this ticket. Here it's well explained.
cash-metall Posted April 22, 2024 Posted April 22, 2024 Unfortunately, the ability to obtain the sender's port is still not available through the UnigineAPI. However, you can still achieve this as described in the thread to which you refer. it looks something like this Unigine::SocketPtr serverSocket = Unigine::Socket::create(Unigine::Socket::SOCKET_TYPE_DGRAM); //... init socket char buffer[1024]; sockaddr_in clientAddr; socklen_t clientAddrLen = sizeof(clientAddr); ssize_t bytesReceived = recvfrom(serverSocket->getFD(), buffer, sizeof(buffer), 0, (sockaddr*)&clientAddr, &clientAddrLen); if (bytesReceived == -1) { Unigine::Log::error("Error receiving data\n"); return; } // Get the client's port int clientPort = ntohs(clientAddr.sin_port); Log::message("Received data from client port: %d\n", clientPort); Alternatively, you can use any third-party networking library with broader capabilities.
Recommended Posts