//类一:
try {
     ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
     reception = ois.readObject();
     ois.close();
     socket.close(); //关闭Socket
} catch (Exception e) {
     e.printStackTrace();
}//类二:
public Object reqInfo (Object req , Socket socket){
     ArrayList al = (ArrayList) req;
     al.add(socket);
     Object obj = (Object) al;
     return obj;
}//类三:
public void jud_do(Object temp){
al = (ArrayList)temp;
sokect = al.get(X).toString();//X代表类二中socket存的位置
receiveRequest(socket)
}
  
//类四:
public void receiveRequest(Socket socket) {
        this.socket = socket; 
        try {
            ObjectOutputStream oos= new ObjectOutputStream(socket.getOutputStream());
            oos.writeObject(reception);
            oos.flush();
            oos.close();
            socket.close(); //关闭Socket
        } catch (Exception e) {
            e.printStackTrace();
        }
}
不知道这样做有没有问题?!请达人们帮忙解决一下,小弟对网络方面很菜的,请指教!!!

解决方案 »

  1.   

    刚才发的有错误
    现在修改了一下:
    不好意思咯//类一:
    public void receive(Socket socket) {
            this.socket = socket;
    try {
    ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
    reception = ois.readObject();
    reqInfo(reception,socket);//类二方法
    ois.close();
    } catch (Exception e) {
    e.printStackTrace();
    }//类二:
    public Object reqInfo (Object req , Socket socket){
         ArrayList al = (ArrayList) req;
         al.add(socket);
         Object obj = (Object) al;
         return obj;
    }public void getinfo(){
    jud_do(reqInfo());//类三方法
    }//类三:
    public void jud_do(Object temp){
    al = (ArrayList)temp;
    sokect = al.get(X).toString();//X代表类二中socket存的位置
    receiveRequest(socket);//类四方法
    }
      
    //类四:
    public void receiveRequest(Socket socket) {
            this.socket = socket; 
            try {
                ObjectOutputStream oos= new ObjectOutputStream(socket.getOutputStream());
                oos.writeObject(reception);
                oos.flush();
                oos.close();
                socket.close(); //关闭Socket
            } catch (Exception e) {
                e.printStackTrace();
            }
    }
      

  2.   

    做为一个toy program已经没有什么太大的问题了。
      你如果还要想做深点,不妨用下连接池。
      

  3.   

    看着头晕...1.socket未指定Host和Port
    2.看不清楚服务端和客户端,看不清楚程序要干嘛,一般来说socket 的server端只启用一个进程在运行即可,其内部是有队列的
    3.类三里,sokect = al.get(X).toString();//X代表类二中socket存的位置
    这句已经变成String了,又把其做为参数传到方法receiveRequest(socket);里,而该方法的参数类型却是Socket socket