基本上是如此
一个windows下的监控和记录程序
用一台pc做服务器,运行这个程序,通过一直监听一个固定的端口获取发过来的数据报.然后解析之后保存在mysql数据库相应的表格中.
几个客户机会知道服务器的ip地址和端口号,发送数据
现在想讨论服务器端这个程序的几个难点1.我之前只接触过c语言的组合数据包,vc是如何做的重来没看过例子,想请教.还有如何解析数据包.2.通过对端口不停的扫描,获取的数据是否要先放在一个缓存的地方,再存入数据表,因为客户端很多,要用什么技术呢?程序运行的时候是否要一直去缓存找新发来的数据存到数据表中呢?3.还有当做存入数据库的动作时候,端口扫描不能停止,是否一定要用到多线程技术,该怎么安排呢!4.还有之前我曾经实验过,用vc向mysql插入数据老是显示乱码,用了很多办法都解决不了,真的很多办法,我都要放弃了.

解决方案 »

  1.   

    1.我之前只接触过c语言的组合数据包,vc是如何做的重来没看过例子,想请教.还有如何解析数据包.
    =====================================================================================
    那个客户端发过来的包结构你知道吗? 不知道的话,要先分析IP包结构,再先人工分析具体的内容
    得出个大概,再在程序中实现.2.通过对端口不停的扫描,获取的数据是否要先放在一个缓存的地方,再存入数据表,因为客户端很多,要用什么技术呢?程序运行的时候是否要一直去缓存找新发来的数据存到数据表中呢?
    /////////////////////////////////////////////////////////////////////////////
    因为是监控,所以接收要实时,写入要可靠.
    建一个全局的线程安全的数据报链表.
    接收线程,只管收,收到后将之加入链表.并通知分析线程.分析线程:是一个等待二个事件(hQuit: 程序停止|退出|暂停, hNewPacket: 收到新报事件.)
             设超时时间为3000 ms.(之所以有超时为了防止 hNewPacket信号丢失.
             在 hNewPacket.事件和超时事件中分析包.
                每分析完一个包,将分析的结果加入到写入线程.
    写入线程:等待二个事件(hQuit: 程序停止|退出|暂停, hNewSaved: 有保存数据.),超时类上.
             这边就是不停的写入,注意要用Sleep以给收接线程调度机会.//
    3.还有当做存入数据库的动作时候,端口扫描不能停止,是否一定要用到多线程技术,该怎么安排呢!
    ===================================================================================
    见上4.还有之前我曾经实验过,用vc向mysql插入数据老是显示乱码,用了很多办法都解决不了,真的很多办法,我都要放弃了.
    ===================================================================================
    你确定你没有把MBCS|UNICODE_Big|UNICODE|UTF8的字串搞混?
      

  2.   

    roscoe(草上飞) 
    4.还有之前我曾经实验过,用vc向mysql插入数据老是显示乱码,用了很多办法都解决不了,真的很多办法,我都要放弃了.
    ===================================================================================
    你确定你没有把MBCS|UNICODE_Big|UNICODE|UTF8的字串搞混?
    肯定没有搞错
      

  3.   

    你以char存取时,根不不可能乱码的,因为字节数据又不存在倒序的可能.你的字段是什么类型,把代码贴出来看下.