A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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()这样是错的呢?

3 个回复

倒序浏览
socket[i].getOutputStream()?是socket[i]么?没见过这种样式的。

socket[i]是不是socket.get(i)楼主给写错了吧

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 谭立文 于 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){

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

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马