2014-10-27 70 views
1

当手机收到新的短信时,我的应用程序会向PC发送通知。如果有问题,我正在通过蓝牙进行。如何跟踪服务器和客户端之间交换的消息?

(这涉及到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++。

+0

您是否需要数据库或在主内存中执行此操作是否正常。 – 2014-10-27 04:22:26

回答

1

简单的方法是使用现有的文件系统来存储信息如下: -

  1. 保持一个接收的文件和传送文件在特定文件夹中的每个接触。
  2. 将它们命名为contact-rec-file和contact-sent-file。
  3. 每次您收到或发送消息。
  4. 追加消息给相应的已发送或接收的文件
  5. 第一写消息的以字节为单位的大小来文件
  6. 的端部然后写该消息的内容。
  7. 每当你需要显示消息打开文件
  8. 读取文件的大小,然后使用大小读取消息的内容。

注:使用主存储器,用于存储消息是作为大量的内存使用非常低效,如果有发送更多的消息。

优化: -使用另一个文件来存储信息的数量和他们的搜索位置在发送或接收文件,以便您可以阅读在加载时该文件,然后直接寻求正确位置的文件,如果你阅读只有特定的消息。

+0

谢谢,我从来没有想过要写入文件。它需要大量的指针。当你说消息写入文件结束时,你能否请解释一下#5。 – SofDev 2014-10-27 13:45:57

+0

您可以使用单个文件来存储邮件,但是您需要使用分隔符来分隔邮件。因此将消息存储为(size1,message1),(size2,message2)....使用此格式,您可以先读取消息的大小并使用大小读取消息。此技术可防止使用任何分隔符来分隔文件。 – 2014-10-27 16:07:55

0

这取决于你想跟踪的内容,如果你只想要发送和接收消息的统计数据,那么每个联系人的两个计数器就可以完成。如果你只是希望客户端发送和接收的消息,而不是关心它们是如何交错的,那么每个客户端就会有2个列表。如果您还需要了解它们如何交错的顺序,那么正如您所建议的那样,带有附加标志的单个列表指示它是否是已发送或已收到的消息。还有其他的可能性,这些只是为了让你开始。

好吧,如果为了事宜,那么这里有2个办法,我能想到的把我的头顶部:不是具有指示状态的标志

1)在链表中,有3个下一个指针,一个用于下一个消息,一个用于下一个发送的消息,一个用于下一个接收的消息。下一个消息指针将与其他消息指针具有相同的值,但这就是您可以知道它们是如何交错的。所以现在你可以很容易地得到发送消息,接收到的消息,或者其他奇怪的步行列表。 2)只有1个链接列表/数组/表格,每个条目将包括联系信息和SENT/RECEIVED标志。这是不好的,如果有很多关于联系人的其他信息,你想保留,因为他们现在需要复制。但为了简单起见,只有1个列表而不是列表。要解决这个问题,你可以创建一个单独的列表,只有联系信息,并在消息链接列表中添加一个引用到这个联系信息列表。您还可以在消息列表中创建contacts_next_message指针,这样您可以使用该指针并获取所有联系人消息。

等等,有很多方法可以做到这一点。

+0

是的订单很重要:)就像当你点击手机上的联系人并看到交换的文字信息一样。 – SofDev 2014-10-27 01:14:13

相关问题