首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android在thread里边构造socket需要死循环 ?

2013-08-13 
android在thread里面构造socket需要死循环 ??我利用一个按钮创建了 一个socket客户端,进行接受数据,我发现

android在thread里面构造socket需要死循环 ??
我利用一个按钮创建了 一个socket客户端,进行接受数据,我发现可以正常的接受服务器发来的数据的额,但是我在网上看到好多人要用一个while(true ) 不解,实在不解啊,求指教啊~~
我的代码就是,将接受到的数据返回服务器,我只要开启了就可以正常工作,不需要网络上说的什么循环啊,有木有人解释下啊~~android在thread里边构造socket需要死循环 ?


connect_btn.setOnClickListener(new Button.OnClickListener(){
            @Override
            public void onClick(View v) {
                connect_btn.setEnabled(false);
                set_btn.setEnabled(false);
                stop_btn.setEnabled(true);
                send_btn.setEnabled(true);
                 
                 
                new Thread()
                {
                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        super.run();
                        try {
                            // TODO Auto-generated catch block
     
                            Socket socket = new Socket(HOST, PORT);
                            //获得输入流
                            InputStream inputStream=socket.getInputStream();


                            //获得输出流
                            OutputStream outputStream = socket.getOutputStream();
                            //PrintWriter os = new PrintWriter(socket.getOutputStream())
                            int temp = 0;
                            String s;
                            byte []byteBuffer = new byte[1024];
                            while((temp=inputStream.read(byteBuffer))!=-1)
                            {
                                outputStream.write(byteBuffer,0,temp);//原样返回 收到的数据                        
                s = new String(byteBuffer,0,temp);//将byte转为string
                                 
             
                            }
                            outputStream.flush();
                            socket.close();


                             
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }    
                        }                            
                }.start();
             
                 
            }
        });


[解决办法]
监听么 可以 “死”循环啊 while(flag) flag = true/false 
[解决办法]
你看到的循环可能是别人的服务器代码,服务器要不断listen,或者你看到的是别人receive()功能,如果你不用循环不断receive怎么收别人的包
[解决办法]
你写的没有问题。
不过判断了socket断开的情况了没有
c语言中recv返回0则表示close了。
android的不明

热点排行