J'ai fait un serveur via le réseau boost et son fonctionnement, mais quand je stocke les clients qui s'y connectent dans std :: map, puis boucle toute la carte et en reçois il me donne la segmentation faute, Heres le backtrace (gdb):recevoir des données à partir d'un problème de socket boost
Program received signal SIGSEGV, Segmentation fault.
boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_sock
t_service<boost::asio::ip::tcp> >::read_some<boost::asio::mutable_buffers_1>
(this=0x153fe48, [email protected], [email protected])
at D:/Dev-Cpp/include/boost/asio/detail/win_iocp_socket_service.hpp:294
294 {
(gdb) bt
#0 boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::stream_
ocket_service<boost::asio::ip::tcp> >::read_some<boost::asio::mutable_buffers_1
(this=0x153fe48, [email protected], [email protected])
at D:/Dev-Cpp/include/boost/asio/detail/win_iocp_socket_service.hpp:294
#1 0x0040c825 in Client::receive (this=0x3d3fd0) at client.cpp:26
#2 0x00401913 in main (argc=1, argv=0x3d2568)
at D:/Dev-Cpp/Bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bi
s/basic_string.h:1456
(gdb)
mon client.cpp:
#include "client.h"
#include <iostream>
#include <boost/array.hpp>
Client::Client(boost::asio::ip::tcp::socket* _sock)
: sock(_sock)
{
//
}
Client::~Client()
{
//
}
void Client::send(const std::string& msg)
{
boost::asio::write(*sock, boost::asio::buffer(msg, msg.length()));
}
std::string Client::receive()
{
boost::array<char, 1024> buffer;
boost::system::error_code err;
sock->read_some(boost::asio::buffer(buffer), err);
if (err == boost::asio::error::eof)
return std::string();
return std::string(buffer.data());
}
Que puis-je faire?
Pour le code format, sélectionnez-le et appuyez sur CTRL + K. Ce n'est pas BBCode. – EboMike
Pourriez-vous poster le code de stockage et d'obtenir de la carte? –
oui ici: http://pastebin.com/UmC4ewW6 –