Dies ist mein erster Versuch mit DLib. Mein Ziel ist es, einen Hintergrundserver zu haben, mit dem ich mich mit vielen Client-Threads gleichzeitig verbinden kann. Laut der Dokumentation, start_async()
sollte der Weg sein, mit einer konkreten Implementierung von dlib::server
gehen, so das ist, wie ich meinen Server einrichten.DLib - Warum akzeptiert start_async() keine Verbindungen in einem Hintergrund-Thread?
class TestServer : public dlib::server
{
private:
void on_connect(dlib::connection& c)
{
cout << "Hi." << endl;
}
public:
void start_server()
{
set_listening_ip("127.0.0.1");
set_listening_port(4790);
start_async();
}
};
Was folgt, ist meine ServerMain.cpp
:
int main(int argc, char** argv)
{
TestServer ts;
try
{
ts.start_server();
}
catch(exception& e)
{
cerr << e.what() << endl;
}
return 0;
}
Und das ist mein ClientMain.cpp
:
int main(int argc, char** argv)
{
try
{
iosockstream stream("127.0.0.1:4790");
cout << "CLIENT - Connected." << endl;
}
catch(exception& e)
{
cerr << e.what() << endl;
}
cout << "Done." << endl;
return 0;
}
Nach meinem Server gestartet haben, jeder Versuch, es mit einem Rechner führt zu verbinden in eine Ausnahme:
unable to connect to '127.0.0.1:4790'
Auch weder lsof
noch netstat
zeigen alle Prozess hören auf Port 4790
. Was mache ich falsch?
Ich bin auf Mac OS X 10.9.5, kompiliert mit -std=c++11 -DDLIB_NO_GUI_SUPPORT
.
Upvoted, da Sie uns Code zeigen und scheinbar versucht haben, dies auf eigene Faust zu lösen. Das heißt nicht, dass keine zusätzlichen Details hinzugefügt werden konnten (wie das Betriebssystem usw.) ... –
@JesperJuhl Ich habe Details über das Betriebssystem in der letzten Zeile geschrieben. – pr0gma