为了解决同一个局域网内聊天,但没有连Internet,网
上有好些个局域网聊天工具,比较出名的象飞鸽传书。
我用JAVA开发一个这样的局域网聊天工具,保证不连
Internet能在局域网内使用。
我的疑问如下:
(1)局域网聊天工具一定要作成“点到点”(P2P)模式吧?
(2)服务器端和客户端如何糅合在一块?
(3)开发这样跟开发连接到Internet聊天软件有什么差别?
哪一个难些?
请各位大侠帮我思考一下吧,我是JAVA菜鸟,希望回答能
详细些,谢谢。

解决方案 »

  1.   

    1.一个服务器多个客户端 由服务器转发消息
    2.服务器和客户端分开啊 但是可以重用一些代码
    3.主要就是网络编程那一块 局域网的和Internet没有多大区别
      

  2.   

    (1)局域网聊天工具一定要作成“点到点”(P2P)模式吧?
    (2)服务器端和客户端如何糅合在一块?
    (3)开发这样跟开发连接到Internet聊天软件有什么差别?
    ===>
    (1)没有这个必要,这个完全根据需求来定的,没有一定要做成社么的说法
    (2)服务器端和客户端完全可以存在于一台机器上的,他们的角色是一直才切换的
    (3)这个区别要看是哪方面的了,如果你单做成P2P形式的,连Internet的就多一个中转而已,
      局域网直接连
    下面给LZ个SOCKET的例子,你研究下吧
    /**
       @version 1.20 2004-08-03
       @author Cay Horstmann
    */import java.io.*;
    import java.net.*;
    import java.util.*;/**
       This program implements a simple server that listens to port 8189 and echoes back all 
       client input.
    */
    public class EchoServer
    {  
       public static void main(String[] args )
       {  
          try
          {  
             // establish server socket
             ServerSocket s = new ServerSocket(8189);         // wait for client connection         
             Socket incoming = s.accept( );
             try
             {
                InputStream inStream = incoming.getInputStream();
                OutputStream outStream = incoming.getOutputStream();            Scanner in = new Scanner(inStream);         
                PrintWriter out = new PrintWriter(outStream, true /* autoFlush */);            out.println( "Hello! Enter BYE to exit." );
                
                // echo client input
                boolean done = false;
                while (!done && in.hasNextLine())
                {  
                   String line = in.nextLine();            
                   out.println("Echo: " + line);            
                   if (line.trim().equals("BYE"))
                      done = true;
                }
             }
             finally
             {
                incoming.close();
             }
          }
          catch (IOException e)
          {  
             e.printStackTrace();
          }
       }
    }