Je passais en revue les exemples de boost.asio et je me demande pourquoi il n'y a pas d'exemple d'exemple de serveur/client simple qui imprime une chaîne sur le serveur et renvoie ensuite une réponse au client.
J'ai essayé de modifier le serveur d'écho mais je n'arrive pas vraiment à comprendre ce que je fais du tout.
Quelqu'un peut-il me trouver un modèle de client et un modèle de serveur?
Je voudrais éventuellement créer une application serveur/client qui reçoit des données binaires et renvoie juste un accusé de réception au client que les données sont reçues.
EDIT:Comment créer une application serveur/client simple en utilisant boost.asio?
void handle_read(const boost::system::error_code& error,
size_t bytes_transferred) // from the server
{
if (!error)
{
boost::asio::async_write(socket_,
boost::asio::buffer("ACK", bytes_transferred),
boost::bind(&session::handle_write, this,
boost::asio::placeholders::error));
}
else
{
delete this;
}
}
Cela renvoie au client que 'A'.
Toujours dans data_, je reçois beaucoup de symboles bizarres après la réponse elle-même.
Ce sont mes problèmes.
EDIT 2:
Ok, donc le problème principal est avec le client.
size_t reply_length = boost::asio::read(s,
boost::asio::buffer(reply, request_length));
Puisqu'il s'agit d'un serveur d'écho, le 'ACK' n'apparaîtra que si la longueur de la requête est supérieure à 3 caractères.
Comment puis-je surmonter cela?
J'ai essayé de changer request_length à 4 mais cela fait seulement attendre le client et ne rien faire du tout.
Je voudrais imprimer la chaîne envoyée par le client sur le serveur, puis renvoyez un accusé de réception qui sera imprimé sur le client. Pouvez-vous me montrer comment c'est fait? –