关于TCP的一个疑问

jayray007 2008-07-14 12:04:58

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

不知道这样做有没有问题?!请达人们帮忙解决一下,小弟对网络方面很菜的,请指教!!!
...全文
111 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
胡矣 2008-07-14
  • 打赏
  • 举报
回复
mark
jayray007 2008-07-14
  • 打赏
  • 举报
回复
刚才发的有错误
现在修改了一下:
不好意思咯

//类一:
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();
}
}
songfuqiang 2008-07-14
  • 打赏
  • 举报
回复
mark
xunyiren 2008-07-14
  • 打赏
  • 举报
回复
看着头晕...

1.socket未指定Host和Port
2.看不清楚服务端和客户端,看不清楚程序要干嘛,一般来说socket 的server端只启用一个进程在运行即可,其内部是有队列的
3.类三里,sokect = al.get(X).toString();//X代表类二中socket存的位置
这句已经变成String了,又把其做为参数传到方法receiveRequest(socket);里,而该方法的参数类型却是Socket socket
刘彬彬 2008-07-14
  • 打赏
  • 举报
回复
做为一个toy program已经没有什么太大的问题了。
你如果还要想做深点,不妨用下连接池。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧