//类一:
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();
}
}
不知道这样做有没有问题?!请达人们帮忙解决一下,小弟对网络方面很菜的,请指教!!!
现在修改了一下:
不好意思咯//类一:
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.看不清楚服务端和客户端,看不清楚程序要干嘛,一般来说socket 的server端只启用一个进程在运行即可,其内部是有队列的
3.类三里,sokect = al.get(X).toString();//X代表类二中socket存的位置
这句已经变成String了,又把其做为参数传到方法receiveRequest(socket);里,而该方法的参数类型却是Socket socket