Trouver l’adresse IP / le processus d’un paquet UDP

J’utilise recvfrom() dans mon programme C pour recevoir des paquets UDP de plusieurs clients, qui peuvent se connecter avec un nom d’utilisateur personnalisé. Une fois qu’ils se sont connectés, j’aimerais que leur nom d’utilisateur soit associé au processus client unique afin que le serveur sache automatiquement qui est l’utilisateur en fonction de l’origine des paquets. Comment puis-je obtenir cette information à partir du paquet que je reçois avec recvfrom() ?

 #include  #include  #include  #include  int main() { int sock = socket(AF_INET, SOCK_DGRAM, 0); struct sockaddr_in addr; memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(1234); addr.sin_addr.s_addr = INADDR_ANY; bind(sock, reinterpret_cast(&addr), sizeof(addr)); char message[256]; struct sockaddr_in from; socklen_t fromLen = sizeof(from); recvfrom(sock, message, sizeof(message), 0, reinterpret_cast(&from), &fromLen); char ip[16]; inet_ntop(AF_INET, &from.sin_addr, ip, sizeof(ip)); std::cout << ip << ":" << ntohs(from.sin_port) << " - " << message << std::endl;