1

私のアプリは、電話で新しいテキスト メッセージを受信すると、PC に通知を送信します。問題がある場合は、Bluetooth経由でそれを行っています。

(これはPC側に関連しています)

私が苦労しているのは、各連絡先のメッセージを追跡することです。新しい連絡先が入ってくると、リンクされたリストが増えることを考えています。各ノードは新しい連絡先を表します。

垂直方向に成長する別のリストがあり、これがその連絡先のメッセージになります。

これを明確にするための図を次に示します。

 =======================
| contact 1 | contact 2 ...
 =======================
    ||           ||         
 =========    =========
 | msg 0 |    | msg 0 |
 =========    =========
    ||           ||         
 =========    =========
 | msg 1 |    | msg 1 |
 =========    =========
    .            .
    .            .
    .            .

これは受信したメッセージを処理しますが、送信された応答を追跡するにはどうすればよいですか? メッセージに TAG_MSG_SENT、TAG_MSG_RECEIVED などのタグを付けますか?

最初に設計を行いたいので、この部分のコードは書いていません。

なぜそれが重要なのですか?

ユーザーがリストから連絡先をクリックすると、次のようなセッションを新しいウィンドウに表示できるようにしたいと考えています。

==============================
|          contact 1         |
==============================
|Received 0                  |
|                      Sent 0|
|                      Sent 1|
|Received 1                  |
==============================

Windows で C/C++ を使用しています。

4

2 に答える 2

0

何を追跡するかによって異なります。送受信されたメッセージの統計だけが必要な場合は、連絡先ごとに 2 つのカウンターで十分です。メッセージがどのようにインターリーブされるかを気にせずに、クライアントによって送受信されるメッセージだけが必要な場合は、クライアントごとに 2 つのリストで十分です。それらがどのようにインターリーブされるかの順序も知る必要がある場合は、提案したように、メッセージが送信されたか受信されたかを示す追加のフラグを持つ単一のリストが機能します。もちろん他にも可能性はあります。

わかりました、順序が重要な場合は、頭のてっぺんから考えることができる2つの方法を次に示します。

1) リンクされたリストでは、ステータスを示すフラグの代わりに、次のメッセージ用、次の送信メッセージ用、次の受信メッセージ用の 3 つの次のポインターがあります。次のメッセージ ポインターは、他のメッセージ ポインターと同じ値になりますが、これは、それらがどのようにインターリーブされているかを知るためのものです。これで、送信されたメッセージ、受信されたメッセージ、またはその両方、またはその他の奇妙なウォークのリストを簡単に取得できます。

2) リンクされたリスト/配列/テーブルが 1 つだけあり、各エントリには連絡先情報と SENT/RECEIVED フラグが含まれます。保持したい連絡先に関する他の情報がたくさんある場合、複製する必要があるため、これは良くありません。ただし、簡単にするために、リストのリストではなく 1 つのリストのみにします。この問題を解決するには、連絡先情報のみを含む別のリストを作成し、メッセージ リンク リストにこの連絡先情報リストへの参照を追加します。メッセージのリストにcontacts_next_messageポインターを作成することもできます。これにより、それを使用して歩き、その連絡先メッセージをすべて取得できます。

など、これを行う方法はたくさんあります。

于 2014-10-27T01:03:43.323 に答える