我在另一个帖子里有问 但是代码不完整 所以再开一贴 大家帮忙看看那里有问题 该怎么改
http://bbs.youkuaiyun.com/topics/391947187?page=1#post-401121731
这是一个手机端控制飞行器的代码
能连接成功 但是发送数据有很大延迟 通常发送之后要等个几分钟 在服务器端才会接收到 而且是突然就出现一大堆的数据
比如我设置了4个按钮 分别发送1,2,3,4 按下之后 几分钟会在服务器接收到 类似1,1234,22,11,1,之类的并不是按下一次接受一次 而是有的是把好几次按的一起显示出来在一行
放上完整的代码 大家看看应该怎么改
//连接服务器
connect_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(){
@Override
public void run() {
try {
socket = new Socket();
SocketAddress address = new InetSocketAddress("192.168.1.102", 8000);
socket.connect(address, 5000);
socket.setTcpNoDelay(true);
socket.setKeepAlive(true);
outputStream = socket.getOutputStream();
inputStream = socket.getInputStream();
}
catch (Exception e) {
e.printStackTrace();
}
};
}.start();
Toast.makeText(Mode2Activity.this,"成功",Toast.LENGTH_SHORT).show();
}
});
//向前飞
forwardbth.setOnTouchListener(
new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
char command = '1';
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
SendCommand(command);
break;
case MotionEvent.ACTION_UP:
SendCommand(stop);
break;
default:
break;
}
return false;
}
});
//向后飞
backbth.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
char command = '2';
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
SendCommand(command);
break;
case MotionEvent.ACTION_UP:
SendCommand(stop);
break;
default:
break;
}
return false;
}
});
//向左飞
leftbth.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
char command = '3';
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
SendCommand(command);
break;
case MotionEvent.ACTION_UP:
SendCommand(stop);
break;
default:
break;
}
return false;
}
});
//向右飞
rightbth.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
char command = '4';
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
SendCommand(command);
break;
case MotionEvent.ACTION_UP:
SendCommand(stop);
break;
default:
break;
}
return false;
}
});
}
public void SendCommand ( char command){
// TODO Auto-generated method stub
try {
OutputStreamWriter osw = new OutputStreamWriter(outputStream);
BufferedWriter bw = new BufferedWriter(osw);
bw.write(command);
bw.flush();
socket.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
http://bbs.youkuaiyun.com/topics/391947187?page=1#post-401121731
这是一个手机端控制飞行器的代码
能连接成功 但是发送数据有很大延迟 通常发送之后要等个几分钟 在服务器端才会接收到 而且是突然就出现一大堆的数据
比如我设置了4个按钮 分别发送1,2,3,4 按下之后 几分钟会在服务器接收到 类似1,1234,22,11,1,之类的并不是按下一次接受一次 而是有的是把好几次按的一起显示出来在一行
放上完整的代码 大家看看应该怎么改
//连接服务器
connect_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(){
@Override
public void run() {
try {
socket = new Socket();
SocketAddress address = new InetSocketAddress("192.168.1.102", 8000);
socket.connect(address, 5000);
socket.setTcpNoDelay(true);
socket.setKeepAlive(true);
outputStream = socket.getOutputStream();
inputStream = socket.getInputStream();
}
catch (Exception e) {
e.printStackTrace();
}
};
}.start();
Toast.makeText(Mode2Activity.this,"成功",Toast.LENGTH_SHORT).show();
}
});
//向前飞
forwardbth.setOnTouchListener(
new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
char command = '1';
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
SendCommand(command);
break;
case MotionEvent.ACTION_UP:
SendCommand(stop);
break;
default:
break;
}
return false;
}
});
//向后飞
backbth.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
char command = '2';
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
SendCommand(command);
break;
case MotionEvent.ACTION_UP:
SendCommand(stop);
break;
default:
break;
}
return false;
}
});
//向左飞
leftbth.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
char command = '3';
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
SendCommand(command);
break;
case MotionEvent.ACTION_UP:
SendCommand(stop);
break;
default:
break;
}
return false;
}
});
//向右飞
rightbth.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
char command = '4';
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
SendCommand(command);
break;
case MotionEvent.ACTION_UP:
SendCommand(stop);
break;
default:
break;
}
return false;
}
});
}
public void SendCommand ( char command){
// TODO Auto-generated method stub
try {
OutputStreamWriter osw = new OutputStreamWriter(outputStream);
BufferedWriter bw = new BufferedWriter(osw);
bw.write(command);
bw.flush();
socket.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}