用AS/TCP开发手机程序----接收树莓派上的定位和视频信息
这是我的毕业项目
因为自己不是软件和计算机类的学生,对这方面的接触也比较少。CSDN上的高手云集,因此在这里写博客来请教各位。
一、为什么我的Android程序,一点连接按钮就会闪退!!!
我怀疑是我自己写的继承自Thread的用于连接的类和按钮按钮函数那里的消息处理事件有问题。还望各位能帮我看看,谢谢!
1、用线程创建Socket连接,并且继承自Thread
// 用线程创建Socket连接
class ConnectThread extends Thread{
public void run(){
// 定义变量,存储ip
InetAddress inetAddress;
try {
// 判断socket的状态,防止重复执行
if(socket == null){
// 获取输入的ip地址
inetAddress = InetAddress.getByName(ipEdit.getText().toString());
// 获取输入的端口
int port = Integer.valueOf(portEdit.getText().toString());
// 新建socket
socket = new Socket(inetAddress,port);
// 获取socket的输入流和输出流
inputStream = socket.getInputStream();
outputStream = socket.getOutputStream();
// 新建线程,读取数据
ReadThread readThread = new ReadThread();
readThread.start();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2、按钮消息处理事件
public void connect(View view) throws IOException {
// 判断按钮状态
if(butState == true){
// 按钮没有按下
butState = false;
RD = true;
// 创建线程,初始化socket
ConnectThread connectThread = new ConnectThread();
connectThread.start();
// 改变按钮标题
connectBut.setText("断开连接");
}
else{
butState = true;
RD = false;
connectBut.setText("CONNECT");
//关闭连接
try
{
socket.close();
socket=null;
}
catch (IOException e)
{
e.printStackTrace();
}
}