黑马程序员技术交流社区

标题: 为什么socket[i].getOutputStream()这样是错的呢 [打印本页]

作者: 山水游客    时间: 2012-7-1 21:21
标题: 为什么socket[i].getOutputStream()这样是错的呢
static List<Socket> socket;
        DataOutputStream out=null;
        DataInputStream in=null;
        String s=null;
        ServerThread(List<Socket> socketlist){
                 socket=socketlist;
                 for(int i=0;i<socket.size();i++){

                         try{
                                        out=new DataOutputStream(socket[i].getOutputStream());
                                        in=new DataInputStream(socket[i].getInputStream());
                                }catch(IOException e){

                                }
                 }               
        }
socketlist是从别的地方传过来的,现在我想用循环去写和读所有连接到服务器端的socket
out=new DataOutputStream(socket[i].getOutputStream());
in=new DataInputStream(socket[i].getInputStream());为什么socket[i].getOutputStream(),socket[i].getOutputStream()这样是错的呢?
作者: 赵志勇    时间: 2012-7-1 21:45
socket[i].getOutputStream()?是socket[i]么?没见过这种样式的。

socket[i]是不是socket.get(i)楼主给写错了吧
作者: 谭立文    时间: 2012-7-1 23:15
本帖最后由 谭立文 于 2012-7-1 23:27 编辑

取出Object的方法不是socket而是:socket.get(i);
或者你用加强的for循环迭代也可以,这里是因为List <E>实现了Iterable<E>接口才可以这样用。
for(Socket soc: socket)
{
}
我最小限度改你的代码的情况下改了的代码。
List<Socket> socket;
    DataOutputStream out=null;
    DataInputStream in=null;
    String s=null;
    ServerThread(List<Socket> socketlist)
    {
             socket = socketlist;
             for(Socket soc: socket)
             {

                     try{
                                    out = new DataOutputStream(soc.getOutputStream());
                                    in = new DataInputStream(soc.getInputStream());
                            }catch(IOException e){

                            }
             }               
    }
还有我要提醒你这样处理客户端发送过来的消息肯定是有问题的,至于为什么,这里就不多给你解释了,如果还有什么不明白可以说,我才写了一个类似扣扣的课程设计,所以对这个还比较熟悉,希望对你有帮助。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2