> On Jun 21, 2023, at 5:15 AM, Willdoner Christian via live-devel > <live-de...@us.live555.com> wrote: > Is it now possible to get the IP address from each client connected to the > stream? If this is not easily done, the amount of connected clients would be > sufficient. > If doable, could you please share a code snippet?
The simplest way to do this is to define your own subclass of “RTSPServer”, and - in this subclass - redefine the virtual function “createNewClientConnection()” (which is called each time that a client connects to the server). E.g. class myRTSPServer: public RTSPServer { public: static myRTSPServer* createNew(UsageEnvironment& env, Port ourPort = 554, UserAuthenticationDatabase* authDatabase = NULL, unsigned reclamationSeconds = 65) { int ourSocketIPv4 = setUpOurSocket(env, ourPort, AF_INET); int ourSocketIPv6 = setUpOurSocket(env, ourPort, AF_INET6); if (ourSocketIPv4 < 0 && ourSocketIPv6 < 0) return NULL; return new myRTSPServer(env, ourSocketIPv4, ourSocketIPv6, ourPort, authDatabase, reclamationTestSeconds); } private: myRTSPServer(UsageEnvironment& env, int ourSocketIPv4, int ourSocketIPv6, Port ourPort, UserAuthenticationDatabase* authDatabase, unsigned reclamationSeconds) : RTSPServer(env, ourSocketIPv4, ourSocketIPv6, ourPort, authDatabase, reclamationTestSeconds) {} myRTSPServer::~myRTSPServer() {} virtual ClientConnection* createNewClientConnection(int clientSocket, struct sockaddr_storage const& clientAddr) { // The client’s IP address is in “clientAddr”; do what you want with it here // Then call the original function: return RTSPServer::createNewClientConnection(clientSocket, clientAddr); } }; Then, in your application code call myRTSPServer::createNew( … ); instead of RTSPServer::createNew( … ); Ross Finlayson Live Networks, Inc. http://www.live555.com/ _______________________________________________ live-devel mailing list live-devel@lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel