Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Boost套接字/接收器无法在同一端口上侦听/连接?_C++_Sockets_Boost_Network Programming_Boost Asio - Fatal编程技术网

C++ 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

我对Boost有点陌生,但我正在尝试创建一个服务器,它可以在给定端口上接受来自客户端的连接。此服务器还应能够在同一端口上写入客户端

但是,当我尝试使用
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()

不要用文字描述你的代码,而要用文章展示你描述的问题。你完全正确!不需要监听和连接,只需连接和异步读/写即可。非常感谢!