openDDS で簡単なメッセージ プログラムを作成しています。このプログラムは、パブリッシャーとサブスクライバーを使用します。パブリッシャーで、次のメッセージを書きます。
DDS::ReturnCode_t error = message_writer->write(message, DDS::HANDLE_NIL);
180 バイトから 3012 バイトに送信しようとすると、ライターは次のエラーで失敗します。
エラー 10 (== DDS::RETCODE_TIMEOUT)
、約260メッセージの後(1500メッセージを送信しようとしています)。私が奇妙だと思うのは、1 <= x < 180 および 3012 > x > 102400+ バイトからのメッセージを送信したときに機能することです。
ライター側でエラーが発生しています。私が行うライターの下:
if (error != DDS::RETCODE_OK) {
std::cerr << "writer failed because of error" << error << std::endl;
}
私のidlファイルは次のようになります:
module Mess {
struct Mes {
string message;
};};
したがって、これは TAO 文字列マネージャーを使用します。メッセージに char* を渡します。
Messenger::Message message;
message.message = "some_Message";
その後、前のようにメッセージを書きます
参加者:
DDS::DomainParticipant_var participant = dpf->create_participant(DOMAIN_ID, PARTICIPANT_QOS_DEFAULT, 0, OpenDDS::DCPS::DEFAULT_STATUS_MASK);
トピック:
DDS::Topic_var topic = participant->create_topic("TopicName", type_name, TOPIC_QOS_DEFAULT, 0, OpenDDS::DCPS::DEFAULT_STATUS_MASK);
出版社:
DDS::Publisher_var publisher = participant->create_publisher(PUBLISHER_QOS_DEFAULT, 0, OpenDDS::DCPS::DEFAULT_STATUS_MASK);
ライター:
DDS::DataWriter_var writer = publisher->create_datawriter(topic, DATAWRITER_QOS_DEFAULT, 0, OpenDDS::DCPS::DEFAULT_STATUS_MASK);
どんな助けでも大歓迎です。ありがとう!