赫赫,看来楼主很厉害啊,只看了一个星期就懂这么多了?我正在做一个类似于icq和messenger的聊天服务系统,外加有聊天室的,不知道楼主有没有兴趣一起搞?不过已经写完了大半了。

解决方案 »

  1.   

    Java语法、异常处理、多线程、输入输出流、socket编程,差不多看了三四天,然后花了两天时间设计实现这个聊天系统。
      

  2.   

    是你写的吗,好象我教材上的.呵呵
    有点没有礼貌!对不起!
    我也是刚学没有多久,上面你写的这些代码刚好是我做过的作业,
    我还有使用数据报通信的(也就是UDP),SOCKET是TCP的.现在正在学习使用
    SERVLET 来做聊天室,要求能够进行语音通信.如果楼主有空的话,相互交流一下.
      

  3.   

    pufu yi 一个星期旧能到这样的程度!
      

  4.   

    marila设计的有问题,不觉得吗,且问题太多
    public class Server{      static Socket socketlist[] = new Socket[1000];
          public Server( int socketport ) throws IOException {        listenForConnecting( socketport );      }      //listenForConnecting方法用于侦听连接     
     
          private void listenForConnecting( int socketport ) {        ServerSocket serversocket = new ServerSocket( socketport );        try{ 
             //关键是侦听的部分,用一个while循环来实现
             while (true)
                  {
                    Socket socket = serversocket.accept();
                    if (socket==null) break;
                        try{ new ConnectionForClient( this, socket );}
                        catch(IOException e){ dataOut.close();}                          }
                }        finally{ dataOut.close();}  
           }
          //SendMessageCenter方法用于发送信息给客户端
          public void SendMessageCenter (String message,Socket socket) throws IOException{        //建立输出流,将信息发送给客户端
            //你会发现一个用于储存客户端socket信息的数组socketlist[],该数组在客户
            //端连接或断开连接时更新数据,这里不详细讨论这个问题        for(int k=0;k<socketlist.length();k++)
               {                     try{
                     DataOutputStream dataOut = new DataOutputStream( socketlist[k].getOutputStream() );
                     dataOut.writeUTF( message );
                     }
                  catch(IOException e){ dataOut.close();}
                  finally{ dataOut.close();}
                }
               //其他用于判断信息的过程....        ....      }
        }
        然后建立ConnectionForClient类,这个类完成与客户端的连接,并与之进行通信:    public class ConnectionForClient extends Thread{      Server server;
          Socket socket;      //所有准备工作在构造器中完成      public ConnectionForClient( Server server, Socket socket ) {        this.server = server;
            this.socket = socket;
            DataOutputStream dataOut = new DataOutputStream( socket.getOutputStream() );
            //首先建立DataInputStream类用于接收客户端发送的信息
            DataInputStream dataIn = new DataInputStream( socket.getInputStream() );        start();      }
          public void run() {
          
             dataOut.writeUTF( "Welcome!" );
           
           
           try{       //类似于服务器的侦听连接工作,同样侦听客户端发送的信息
            while (true) {
              
              String message = dataIn.readUTF();
              if(message=="over")  
                {
                  dataOut.writeUTF( "bye!" );
                  break;
                 }          //一旦接收到客户端发送的信息,就将详细发送者和发送的信息传给Server类的信息发送中心
              server.SendMessageCenter( message , this.socket );                      }
                 }
             catch(IOException e){ socket.close();}
             finally{ socket.close();}      }      static public void main( String args[] ) throws Exception {        //程序开始执行        int socketport = 8765;        new Server( socketport );      }    }   ___________________________________________________对你客户端的改进:public class Client extends Thread {         DataInputStream dataIn;
          DataOutputStream dataOut;
          Socket socket;      //Client类的构造器      
          public Client( String hostAdress, int socketport ){       // 建立socket对象
          socket = new Socket( hostAdress, socketport );       dataIn = new DataInputStream( socket.getInputStream() );
           dataOut = new DataOutputStream( socket.getOutputStream() );
              
          BufferedReader in = new BufferedReader(new InputStreamReader(System.in));        //开始后台线程用于监听服务器端传送的信息
            start();
            }      public void run(){       
          try{
     
              while (true) {
                     System.out.println("input over to complet!");  
             
                     String words = in.readLine();                 sendMessage(words);
      
                    //等待服务器发送信息并显示出来
                     String message = dataIn.readUTF();
                     if(message=="bye!") break;                 System.out.print ( message + "\n" );
                          }
              }
              catch(IOException e){ socket.close(); }
              finally{ socket.close();}      }      //sendMessage方法将用户输入的信息发送给服务器      private void sendMessage( String message ){        dataOut.writeUTF( message );      }      //程序开始执行
          
          public static void main(String args[]){        int socketport = 8765;        String hostAddress = "211.211.211.211" //其实可以通过参数指定IP和端口,这里简化这个过程        new Client( hostAdress , socketport );      }
        }
      

  5.   

    我也是刚接触java不长时间,因为毕业设计需要用java做,题目是做一个p2p的聊天软件。我的想法是做成客户服务在一个软件里的那中模式,不知道合理不合理。还有,楼上的楼上,你一个客户端就写了8000多行,那我两个一起写,要写多少行啊?:)
      

  6.   

    对了,前一阵看到一个专门用于做p2p程序的一个开发平台,是基于java下的。名字叫jxta,不知道各位大侠对这个东东有什么看法?
      

  7.   

    http://expert.csdn.net/Expert/topic/1639/1639631.xml?temp=.2952845看看有没有朋友对这个有兴趣的