【发布时间】:2015-08-28 16:16:06
【问题描述】:
我正在尝试在我的本地计算机上实现服务器 - 客户端关系。
我有一个 java 程序充当服务器,它侦听端口 4567。 我有一个充当客户端的 java 程序,它打开到 127.0.0.1:4567 的连接并发送消息。
这一切正常,正在接收消息。
问题
我在 C++ 中使用 boost asio 实现了客户端程序,以同样的方式发送消息,但它不起作用,尽管消息发送成功。
不起作用的 C++ 客户端代码:
using namespace boost::asio;
io_service io_service;
ip::udp::socket socket(io_service);
ip::udp::endpoint remote_endpoint;
socket.open(ip::udp::v4());
remote_endpoint = ip::udp::endpoint(ip::address::from_string("127.0.0.1"), 4567);
boost::system::error_code err;
string msg = err.message();
socket.send_to(buffer("test_from_c++", 13), remote_endpoint, 0, err);
msg = err.message();
cout << err.message() << endl;
socket.close();
输出是
The operation completed successfully
另外,这里是工作的java客户端代码。
String address = "127.0.0.1";
int port = 4567;
Socket socket = new Socket(address, port);
System.out.println("Successfully opened socket for communication to " + address + " on port " + port);
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
out.write("test_from_java");
out.newLine();
out.close();
socket.close();
【问题讨论】:
-
你需要一个 io_service.run()
-
在哪里拨打电话?
-
@ChrisWard1000 同步操作不需要
io_service.run()。
标签: java c++ sockets boost boost-asio