如题
不要定时刷新的那种
效果好、简便
如果哪位朋友有,给我发一份不胜感激!
[email protected]

解决方案 »

  1.   

    用APPLET?
    那不可能每个客户端都安装JRE吧
      

  2.   

    //文件名:ChatClient.java
    import java.net.*;
    import java.io.*;
    /**
     * <p>Title: 网络聊天吧</p>
     * <p>Description: 这是一个使用数据报通讯方式的聊天程序的客户端</p>
     * <p>Copyright: Copyright (c) 2003</p>
     * <p>Filename: ChatClient.java</p>
     * @version 1.0
     */
    public class ChatClient{
     private DatagramSocket s;
     private InetAddress hostAddress;
     private byte[] buf = new byte[1000];
     private DatagramPacket dp = new DatagramPacket(buf,buf.length);/**
     *<br/>方法说明:构造器,这里实现接收用户输入和与服务器通讯
     *<br/>输入参数:
     *<br/>返回类型:
     */
      public ChatClient(){
       try{
           //使用构造器,创建使用本机任何可用端口的数据包Socket
           s = new DatagramSocket();
           //获取本地IP
           hostAddress = InetAddress.getByName("localhost");
           System.out.println("Client start............");
           while(true){
             String outMessage ="";  
            //读取输入
             BufferedReader stdin  = new BufferedReader(new InputStreamReader(System.in));
             try{
               outMessage = stdin.readLine();
             }catch(IOException ie){
               System.err.println("IO error!");
             }
             //如果输入“bye”则表示退出程序
             if(outMessage.equals("bye")) break;
             String outString = "Client say: "+ outMessage;
             byte[] buf = outString.getBytes();
             //打包数据,发送数据
             DatagramPacket out = new DatagramPacket(buf,buf.length,hostAddress,ChatServer.PORT);
             s.send(out);
             //等待服务器返回
             s.receive(dp);
             String rcvd = "rcvd from "+ dp.getAddress() + ", " + dp.getPort() + 
             ": "+ new String(dp.getData(),0,dp.getLength());
             System.out.println(rcvd);
             
          }
         }catch(UnknownHostException e){
           System.out.println("Can;t open socket");
           System.exit(1);
         }catch(SocketException e){
           System.out.println("Can;t open socket");
           e.printStackTrace();
           System.exit(1);
         }catch(IOException e){
           System.err.println("Communication error");
           e.printStackTrace();
           System.exit(1);
         }catch(Exception e){
           System.err.println("Communication error");
           e.printStackTrace();
           System.exit(1);
         }
         System.out.println("ChatClient over");
     }
    /**
     *<br/>方法说明:主方法
     *<br/>输入参数:
     *<br/>返回类型:
     */
     public static void main(String[] args){
        new ChatClient();
     }
    }  import java.net.*;
    import java.io.*;
    import java.util.*;
    /**
     * <p>Title: 网络聊天吧</p>
     * <p>Description: 使用数据报创建的聊天服务器</p>
     * <p>Copyright: Copyright (c) 2003</p>
     * <p>Filename: ChatServer.java</p>
     * @version 1.0
     */
    public class ChatServer{
     static final int PORT = 4000;//设置服务端口
     private byte[] buf = new byte[1000];
     private DatagramPacket dgp =new  DatagramPacket(buf,buf.length);
     private DatagramSocket sk;
    /**
     *<br/>方法说明:服务端构造器,实现读取用户输入和通讯
     *<br/>输入参数:
     *<br/>返回类型:
     */
     public ChatServer(){
       try{
         //实例化数据报
         sk = new DatagramSocket(PORT);
         System.out.println("Server start.................");
         while(true){
           //等待接收
           sk.receive(dgp);
           //获取接收信息
           String rcvd = new String(dgp.getData(),0,dgp.getLength())+ 
              ", from address: "+ dgp.getAddress()+
              ", port: "+ dgp.getPort();
           System.out.println(rcvd);
           String outMessage ="";  
            //读取输入
             BufferedReader stdin  = new BufferedReader(new InputStreamReader(System.in));
             try{
               outMessage = stdin.readLine();
             }catch(IOException ie){
               System.err.println("IO error!");
             }
           String outString = "Server say: "+ outMessage;
           //拷贝字符到缓存
           byte[] buf = outString.getBytes();
           //打包数据,发送回信息。
           DatagramPacket out = new DatagramPacket(buf,buf.length,dgp.getAddress(),dgp.getPort());
           sk.send(out);
         }
        }catch(SocketException e){
          System.err.println("Can't open socket");
          System.exit(1);
        }catch(IOException e){
         System.err.println("Communication error");
         e.printStackTrace();
         System.exit(1);
        }
     }
     public static void main(String[] args){
       new ChatServer();
     }
    }
      

  3.   

    LumaQQ就是用java编的,而且是开源的,lz可以去看看。
      

  4.   

    通过套接字写聊天室不就要写个客户端程序了吗,我不想让用户安装一个客户端程序或者是jre,我现在只想通过jsp来实现实时聊天功能,但是就不知道从哪里下手!
      

  5.   

    我前段时间写了一个是ajax+jsp+servlet+oralce
    有用户注册,消息是写在内存里
    有兴趣的话联系我QQ9221115
      

  6.   

    不过使用jsp做的聊天室确实不是很好做啊
    我看了些资料
    但是源代码都没有多少