Thread: [asio-users] Server and multiple clients
Brought to you by:
chris_kohlhoff
From: Gonzalo G. <gga...@gm...> - 2013-10-28 15:07:57
|
I have an application that acts as both a server and a client. There can be multiple clients and the commands to control the application come both from the server and from the clients. The application works fine when the server and a single client talk to each other. My problem is that I do not know how to control the other clients from one of the clients, as the commanding client does not know about all other clients. The server knows all clients but it does not know which of the clients sent the request to distribute to all clients, so it ends up re-sending the request to the client that sent the command in the first place. Hopefully, this all makes sense and there's an easy workaround. |
From: Igor R <boo...@gm...> - 2013-10-28 16:12:17
|
> I have an application that acts as both a server and a client. There > can be multiple clients and the commands to control the application come > both from the server and from the clients. The application works fine > when the server and a single client talk to each other. > My problem is that I do not know how to control the other clients from > one of the clients, as the commanding client does not know about all > other clients. The server knows all clients but it does not know which > of the clients sent the request to distribute to all clients, so it ends > up re-sending the request to the client that sent the command in the > first place. > Hopefully, this all makes sense and there's an easy workaround. Did you try to use socket::remote_endpoint() to identify clients? Otherwise, you could provide some application-level identification technique, eg. every client could get a "token" from the server and send this token on every subsequent call to the server. |
From: Gonzalo G. <gga...@gm...> - 2013-10-28 17:28:10
|
On 28/10/13 13:11, Igor R wrote: > Did you try to use socket::remote_endpoint() to identify clients? No, do you have an example of how to use it? The docs are not very clear. |
From: Igor R <boo...@gm...> - 2013-10-28 17:52:35
|
>> Did you try to use socket::remote_endpoint() to identify clients? > No, do you have an example of how to use it? The docs are not very clear. http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/reference/ip__tcp/endpoint.html It has address() and port() member function. Or just see what you get with the following: std::string s = boost::lexical_cast<std::string>(socket_.remote_endpoint()); |