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

解决方案 »

  1.   

    listener接到一个请求交给线程池处理不就行了?
      

  2.   

    利用Socket进行编程就可以实现你的接收数据报的功能,同时涉及到接收的内容进行简单的存储,需要建立队列,其他就是处理接收来的数据报了,这个算法你应该有。
      

  3.   

    使用 Socket 侦听端口,使用多线程进行处理,可以不用缓存。给你看一段多线程的代码例子:
    http://www.regexlab.com/zh/jar2exe/demo3.htm对于第 1 个问题,socket 接收来数据是 byte[] 数组。在 java 中,没有办法象c语言那样,可以通过转换为 struct 指针的方式来读取信息,只能对 byte[] 进行分析,或者使用 new String 之后再进行分析。关于字符串以及编码方面的问题:
    http://www.regexlab.com/zh/encoding.htm
      

  4.   

    java编程思想里面就有现成的例子,修改一下就可以用
      

  5.   

    1.我之前只接触过c语言的组合数据包,java是如何做的重来没看过例子,想请教.还有如何解析数据包.--JAVA的更简单,看看例子就会了。2.通过对端口不停的扫描,获取的数据是否要先放在一个缓存的地方,再存入数据表,因为客户端很多,要用什么技术呢?程序运行的时候是否要一直去缓存找新发来的数据存到数据表中呢?--使用线程,有一个socket请求就创建一个服务线程。当然可以使用缓存,建议看看生成与消费线程的例子。3.还有当做存入数据库的动作时候,端口扫描不能停止,是否一定要用到多线程技术,该怎么安排呢!--使用线程,这是你不二之选
      

  6.   

    向数据库添加的话,也就是把分析好的数据向数据表添时候需要用什么技术和数据表建立连接呢
    jdbc吗
      

  7.   

    向数据库添加的话,也就是把分析好的数据向数据表添时候需要用什么技术和数据表建立连接呢
    jdbc吗
    =============
    JDBC最简单了,看看这方面的材料吧。如果你懂点SQL,不会很难的
      

  8.   

    建议阅读以下内容:
     1. RMI(远程对象调用)
     2. Socket(网络编程接口)
     3. Serializable接口(对象串行化)