だから私のセットアップは以下の通りです:C++ライブラリブーストASIOとTCPサーバとして働いてブースト:: ASIO :: STDとasync_write ::文字列
- ラズベリーパイ。
- TCPクライアントは他のマシンで実行しています。
クライアントからのリクエストに回答する必要があると思われる部分については、通信が正常に動作しています。私は、次のコードを使用しています実行します。
std::cout << "\tI2C message from Arduino: " << I2CrxBuf_;
boost::asio::async_write(sock_, boost::asio::buffer(I2CrxBuf_.c_str(), sizeof(I2CrxBuf_.c_str())), boost::bind(&conn::h_write, shared_from_this()));
std::cout << "Passei o async_write" << std::endl;
事は、そのメッセージが印刷だけで結構ですが、それはクライアントにメッセージを送信せずに、最後の印刷にジャンプし、そのクライアントをブロックします。
I2C message from Arduino: l 1 14.88
Passei o async_write
は、私はこのような一般的なメッセージを送信する場合::それは予想されたよう
boost::asio::async_write(sock_, boost::asio::buffer("Message recevied\n"), boost::bind(&conn::h_write, shared_from_this()));
クライアントがメッセージを受信
サーバーでの出力は次のようです。
私は文字列をchar *に変換する方法と関係がありますが、それを動作させる方法を見つけることはできません。
'sizeof(I2CrxBuf_.c_str())'は4バイトです。私はあなたが 'I2CrxBuf_.size()'を意味したと思います。 – arrowd
ありがとう、実際にはまだ送信していません... –
また、私はチェックして、c.str()メソッドは文字列の最後から '\ n'を削除しません。 クライアントにはメッセージが必要なので、これは問題ではありません。 –