我試圖在本地計算機上實現服務器 - 客戶端關係。我有一個java程序作爲服務器,它監聽端口4567.我有一個java程序作爲客戶端,它打開一個連接到127.0.0.1:4567併發送消息。在服務器端口上未收到UDP消息
這一切正常,正在收到消息。
問題
我實現了在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();
你需要有一個 – ChrisWard1000
io_service.run()我在哪裏地方打電話? –
@ ChrisWard1000同步操作不需要'io_service.run()'。 –