我利用一个按钮创建了 一个socket客户端,进行接受数据,我发现可以正常的接受服务器发来的数据的额,但是我在网上看到好多人要用一个while(true ) 不解,实在不解啊,求指教啊~~
我的代码就是,将接受到的数据返回服务器,我只要开启了就可以正常工作,不需要网络上说的什么循环啊,有木有人解释下啊~~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();
}
});
我的代码就是,将接受到的数据返回服务器,我只要开启了就可以正常工作,不需要网络上说的什么循环啊,有木有人解释下啊~~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();
}
});
不过判断了socket断开的情况了没有
c语言中recv返回0则表示close了。
android的不明