目前我做的聊天工具,聊天,传文件需要服务器,通过服务器获取到对方的IP,主机名,这样好麻烦!!(局域网)不需要服务器,不知道对方IP的情况下,如何将数据包发给大家,让别人知道我上线了。。想飞秋的感觉!!,其实也是想做个类似的,只是功能可以慢慢加。。求思路~!!!

解决方案 »

  1.   

    这是可以的。看看tcp/ip socket java 编程。
      

  2.   

    就算是自动搜索主机 也是根据ip互相连接的,只有跟所有的客户端做了socket连接后才能发数据包。
    飞秋也是这个原理吧。你如果更换了ip段或者脱机状态,他即使看的到对方也无法通信,只有通过刷新再次确认网络上的主机。所以获取ip是最基本的。
      

  3.   

    飞鸽有java版的源代码,可以在网上搜来参考
      

  4.   


    向局域网的广播地址IP发消息,不用知道每个IP
      

  5.   

    java的飞鸽 源码 参考。http://www.linuxidc.com/Linux/2008-11/17141.htm
      

  6.   

    java爱好者可以加此群我们一块学习:100756746
      

  7.   

    给你一个思路,可以知道别人上线,你说的不要服务器,我有点不能理解
    我的思路:
    首先你的主机相当于一个服务器, 采用socket通讯,一个用户登录就将该用户的线程保存到以创建的容器里面(hashtable等) 这样假如有三个人登录,也就是说三个人在线,你的容器里面有三个线程 ,
    与此同时,当第二个人登录的时候,此时在服务器里面的容器里遍历一下,容器里有一个用户(第一个登录的人),你就将第二个人上线的消息发送到第一个人的客户端,在在线列表里面会有所显示。第三个人登录的时候也类似,遍历一下,然后向其他两个人发送上线通知。这样就实现了上线通知功能,
    至于发送文件,先上传到你的服务器,在转发
      

  8.   

    目前查API看到方法,就是使用多播,加入一个组,用一个线程一直监听,感觉良好
      

  9.   

    这两天我也正在编写类似的软件,目前有了个雏形,上线下线等的显示没问题了,不需要特殊的服务器。每个人都是服务器和客户端。
    思路是:
    1。上线时广播,通知自己上线了(广播发送者将自己的ip等信息给收广播的人)。
    2。收到上述广播的人主动联络发广播的人(广播接收者将自己的ip等信息发送给广播发送者)。
    3。以上两点成功后,后面的功能也就不难了。说的简单了些,不过里面可想的有很多。lz加油!