读书人

android在thread里边构造socket需要死

发布时间: 2013-08-13 16:43:28 作者: rapoo

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的不明

读书人网 >Android

热点推荐