【发布时间】:2016-11-08 19:47:50
【问题描述】:
这是我第一次尝试使用 DLib。我的目标是拥有一个可以同时与许多客户端线程连接的后台服务器。根据文档,start_async() 应该是dlib::server 的具体实现的方式,所以这就是我设置服务器的方式。
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();
}
};
下面是我的ServerMain.cpp:
int main(int argc, char** argv)
{
TestServer ts;
try
{
ts.start_server();
}
catch(exception& e)
{
cerr << e.what() << endl;
}
return 0;
}
这是我的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;
}
在启动我的服务器后,任何尝试使用客户端连接到它都会导致异常:
unable to connect to '127.0.0.1:4790'
此外,lsof 和 netstat 均未显示任何正在侦听端口 4790 的进程。
我做错了什么?
我在 Mac OS X 10.9.5 上,使用 -std=c++11 -DDLIB_NO_GUI_SUPPORT 编译。
【问题讨论】:
-
赞成,因为您正在向我们展示代码并且似乎已尝试自行解决此问题。这并不是说不能添加额外的细节(比如什么操作系统等)......
-
@JesperJuhl 我将有关操作系统的详细信息放在最后一行。
标签: c++ sockets server client dlib