端点,套接字,接受器之间的区别

时间:2017-11-23 15:05:48

标签: c++ sockets boost-asio

我试图理解使用套接字进行网络编程的概念。

据我了解,电话对话有一个平行性,

  • 端点将是电话号码
  • 插入手机和
  • Acceptor是接听电话的人。

那么,

  • 套接字绑定到端点(手机连接到插头)和

  • Acceptor可以访问套接字和处理程序 (如果有人打电话,一个人就会被放在电话旁边并获得一项任务)

如果这是一个有效的可视化,那么为什么你可以将接受器直接绑定到端点并在之后给接收器提供套接字?或者以上显然是错误的?

tcp::endpoint ep(boost::asio::ip::address::from_string("192.168.XXX.XXX"), portNumber);
tcp::acceptor a(io_service);
tcp::socket s(io_service);

a.open(ep.protocoll());
a.bind(endpoint);
a.listen(boost::asio::socket_base::max_connections);
a.async_accept(s, myHandler);

1 个答案:

答案 0 :(得分:0)

我感到你很痛苦。 我不喜欢boost :: asio框架中使用的抽象或api。 这是我目前所处的位置。

终结点是一个IP地址和一个端口。

套接字是从工程意义上对通道概念的抽象。就像两个电话之间的电线,或者两个天线之间的空气。它由发送方和接收方两个端点定义。

接受者是设置套接字(通道)的事物。更好的名称可能是侦听器,尽管我希望名称不以-er结尾。请告知您是否可以想到一个好的候选人。我在寻找一个更好的名称来描述受体时找到了这篇文章。也许“接收者”是个好名字,因为它是对一类物理事物的抽象。例如,碟形卫星天线可以充当接收器。

由于您处在boost :: asio之地,因此将io_service视为eventLoop可能会更好。那个人也打扰我了。

您可能会发现,从客观主义(哲学派)研究无效概念的想法很有价值,似乎在命名事物和认识论(知识原理)的挑战之间存在对应关系。