日期:2014-05-20  浏览次数:20774 次

关于TCP的一个疑问
Java code

//类一:
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();
        }
}

不知道这样做有没有问题?!请达人们帮忙解决一下,小弟对网络方面很菜的,请指教!!!

------解决方案--------------------

------解决方案--------------------
mark
------解决方案--------------------
做为一个toy program已经没有什么太大的问题了。
你如果还要想做深点,不妨用下连接池。
------解决方案--------------------
看着头晕...

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