C++ Boost套接字/接收器无法在同一端口上侦听/连接?
我对Boost有点陌生,但我正在尝试创建一个服务器,它可以在给定端口上接受来自客户端的连接。此服务器还应能够在同一端口上写入客户端 但是,当我尝试使用C++ Boost套接字/接收器无法在同一端口上侦听/连接?,c++,sockets,boost,network-programming,boost-asio,C++,Sockets,Boost,Network Programming,Boost Asio,我对Boost有点陌生,但我正在尝试创建一个服务器,它可以在给定端口上接受来自客户端的连接。此服务器还应能够在同一端口上写入客户端 但是,当我尝试使用acceptor.bind()/acceptor.listen()以及socket.connect(*iterator)实现这两个函数时,async\u accept() 如果我只使用acceptor.bind(),acceptor.listen()我可以使用async\u write()写入套接字(从服务器到客户端) 如果我只使用socket.c
acceptor.bind()
/acceptor.listen()
以及socket.connect(*iterator)
实现这两个函数时,async\u accept()
如果我只使用acceptor.bind()
,acceptor.listen()
我可以使用async\u write()
写入套接字(从服务器到客户端)
如果我只使用socket.connect()
(但是注释掉acceptor.bind()
,acceptor.listen()
),我就能够使用async\u read\u some()
从套接字读取数据(从客户端发送到服务器)
我需要创建一个单独的套接字对象还是选择另一个端口?我已将重用地址启用设置为True。为什么要尝试将连接()
到已连接到服务器的客户端?只需写入该连接所接受的现有套接字
如果必须connect()
第二次连接到客户端(例如,像FTP协议对数据传输所做的那样),则不要指定要将该套接字绑定到的端口。让操作系统决定一个合适的端口来使用。似乎你还没有掌握网络编程的一些基本概念,这与boost或Asio库无关。一般来说,服务器调用accept()
,客户端调用connect()
。asio示例详细说明了这一点,请参见
请注意,服务器调用
async\u accept()
async\u read\u some()
async\u write()
而客户端调用
connect()
write()
read()
不要用文字描述你的代码,而要用文章展示你描述的问题。你完全正确!不需要监听和连接,只需连接和异步读/写即可。非常感谢!