Mann... dachte, dass die Verwendung von ASIO in Boost einfach und intuitiv sein würde. :P
Ich fange langsam an, es zu verstehen, aber ich habe einige Probleme. Hier ist ein Ausschnitt. Ich habe mehrere Compilerfehler in der async_accept-Zeile. Was mache ich falsch? :P
Ich habe meinen Code von dieser Seite abgeleitet: http://www.boost.org/doc/libs/1_43_0/doc/html/boost_asio/tutorial/tutdaytime3/src.html
Fehler:
Fehler 1 Fehler C2780: 'void boost::asio::basic_socket_acceptor::async_accept(boost::asio::basic_socket &,boost::asio::ip::basic_endpoint &,AcceptHandler)' : erwartet 3 Argumente - 2 bereitgestellt e:\schulencode\senior projekt\cplusplusport\cplusplusport\alexsocket.cpp 36
Fehler 2 Fehler C2784: 'void boost::asio::basic_socket_acceptor::async_accept(boost::asio::basic_socket &,AcceptHandler)' : konnte keinen Vorlagenausdruck für 'boost::asio::basic_socket &' ableiten aus 'boost::asio::ip::tcp::socket *' e:\schulencode\senior projekt\cplusplusport\cplusplusport\alexsocket.cpp 36
bool TestSocket::StartListening(int port)
{
bool hatGestartet = false;
if (!this->listening)
{
//versuche zuzuhören
acceptor = new tcp::acceptor(this->myService, tcp::endpoint(tcp::v4(), port));
didStart = true; //eventuell ändern?
tcp::socket* tempNewSocket = new tcp::socket(this->myService);
acceptor->async_accept(tempNewSocket, boost::bind(&TestSocket::NewConnection, this, tempNewSocket, boost::asio::placeholders::error) );
}
else //bereits gestartet!
return false;
this->listening = hatGestartet;
return hatGestartet;
}
void TestSocket::NewConnection(tcp::socket* s, const boost::system::error_code& error)
{
}
0 Stimmen
Gib uns mehr Informationen. Du bindest dich an
AlexSocket::NewConnection
mitthis
als erstes Argument - aber soweit ich sehen kann, istthis
nicht einAlexSocket
- oder doch? Und ist die NewConnection Methode virtuell?0 Stimmen
Ugh. Ich versuchte, meinen albernen "MyName" Präfix loszuwerden, den ich allen meinen Klassen hinzufüge, wenn ich Lerncode schreibe. :P
0 Stimmen
Ich denke, das erste Argument muss *tempNewSocket sein. Bitte fügen Sie die Fehler hinzu, die Sie erhalten, zu Ihrer Frage hinzu. Ohne das können wir nur erraten, welche Fehler Sie haben.
0 Stimmen
Fehler hinzugefügt. Entschuldigung für das Versehen. :)
0 Stimmen
@bobber205 Ich schlage vor, dass Sie intelligente Zeiger verwenden. Vermeiden Sie so weit wie möglich direkte Aufrufe von new.