Vérifiez ces deux programmes client client simples. Comme dans la première condition. Le client transmet des données au serveur et Vies Versa est possible. mais quand j'essaie de faire simultanément ou consécutive. Ils sont bloqués en condition de course. méthodeDonnées simples Transmission dans Boost :: asio?
#include <iostream>
#include <boost/asio.hpp>
void handler(boost::system::error_code &error_code, size_t size)
{
}
void read(boost::asio::ip::tcp::socket &socket1, boost::system::error_code error_code)
{
boost::asio::streambuf streambuf;
boost::asio::read(socket1, streambuf, error_code);
std::istream streambuf1(&streambuf);
std::string string;
streambuf1 >> string;
std::cout << string << std::endl;
}
void write(boost::asio::ip::tcp::socket &socket1, boost::system::error_code error_code)
{
std::string string("hello");
boost::asio::write(socket1, boost::asio::buffer(string), error_code);
}
int main()
{
boost::asio::io_service io_service;
boost::asio::ip::tcp::socket socket1(io_service);
boost::asio::ip::tcp::acceptor acceptor(io_service,
boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 9999));
boost::system::error_code error_code;
acceptor.accept(socket1, error_code);
if (error_code != nullptr)
{
std::cerr << error_code.message() << std::endl;
}
write(socket1, error_code);
read(socket1, error_code);
io_service.run();
return 0;
}
est ma façon erronée ou dois-je stimuler l'utilisation :: asio :: async_write() pour la transmission de retour:
programme client:
#include <boost/asio.hpp>
void read(boost::asio::ip::tcp::socket& socket1, boost::system::error_code error_code)
{
boost::asio::streambuf streambuf;
boost::asio::read(socket1, streambuf, error_code);
std::istream streambuf1(&streambuf);
std::string string;
streambuf1 >> string;
std::cout << string << std::endl;
}
void write(boost::asio::ip::tcp::socket& socket1, boost::system::error_code error_code)
{
std::string string("hello");
boost::asio::write(socket1, boost::asio::buffer(string), error_code);
}
int main(int argc, char *argv[])
{
boost::asio::io_service io_service;
boost::asio::ip::tcp::socket socket1(io_service);
boost::asio::ip::tcp::resolver resolver(socket1.get_io_service());
boost::asio::ip::tcp::resolver::query query(boost::asio::ip::tcp::v4(), "9999");
boost::asio::ip::tcp::resolver::iterator iterator = resolver.resolve(query);
boost::asio::connect(socket1, iterator);
boost::system::error_code error_code;
read(socket1, error_code);
write(socket1, error_code);
io_service.run();
return 0;
}
C'est simple programme de serveur et quatrième données.
Quel est exactement le problème? Est-ce que ça plante? Est-ce que quelque chose ne fonctionne pas? "coincé dans l'état de la course" Quand cela se produit-il exactement? S'il vous plaît fournir plus d'informations. – Blacktempel
C'est le problème. Ça ne plante pas. Le serveur et le client ne se transmettent pas de données. si je règle Communication Simplex (Serveur à Client || Client vers Serveur) les données sont en cours de transmission, mais comme j'ai utilisé les deux (Fonction Écriture et Lecture), rien ne se passe. ni les données n'envoient ni ne reçoivent sur les deux côtés. Alors que le problème. –
S'il vous plaît n'oubliez pas de [accepter/upvote une réponse si elle a résolu votre question.] (Https://stackoverflow.com/help/someone-answers) – Blacktempel