我正在尝试理解使用套接字进行网络编程的概念。
据我所知,电话交谈具有相似性,
- 端点是电话号码,
- 插入手机和
- 接受者是接电话的人。
那么,
Socket绑定(bind)到端点(手机连接到插头)
接受器可以访问套接字和处理程序 (一个人被放在电话旁边,并得到一个任务,如果有人打电话该怎么做)
如果这是一个有效的可视化,那么为什么您可以将接受器直接绑定(bind)到一个端点,然后再为接受器提供套接字?还是以上明显错误?
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);
最佳答案
你的等效性不够准确。将接受器视为一种被动套接字:它只是等待其他端点的套接字请求连接,它是只读的。当接受器“读取”请求时(即当相应的 I/O 事件触发时),它将分支出一个连接到远程端点的新套接字,并将所有进一步的 I/O 工作委托(delegate)给它。然而,受体本身仍处于被动模式。
关于c++ - 端点、套接字、接受器之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47458487/