50,535
社区成员
发帖
与我相关
我的任务
分享
private class read_thread extends Thread {
public void run() {
while ( true) {
Log.e(">>@@", "进入read_thread的run函数");
try {
if (instream != null) {
readcount = instream.read(data, 0, 64);//监听乙发过来的ACK
if (readcount > 0)// 有数据到来
{
synchronized (lockObject) {
if (data里收到的是确认ACK) {
ACK = true;
lockObject.notifyAll();//唤醒MainActivity里的发送线程
Log.e(">>@@", "将确认ACK置为true,唤醒MainActivity里的线程");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Create(){
bottomActivity=new BottomActivity(MainActivity.this);
}
private class send_file_thread extends Thread
{
public void run()
{
byte [] senddata = new byte[64];
try{
if(instream != null)
{
readcount = instream.read(senddata,0,64);//从文件里读取64字节的数据
Log.e(">>@@","读取数据包");
while(readcount > 0)
{
SendData(readcount, senddata);//发送数据
Log.e(">>@@","发送数据包");
Log.e(">>@@","即将进入锁定块");
synchronized (bottomActivity.lockObject) {
while (!bottomActivity.ACK) {//如果ACK是false,发送线程就等待,直到ACK变成true
Log.e(">>@@","发送线程等待ACK的到来");
try {
bottomActivity.lockObject.wait();
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
bottomActivity.ACK = false;
}
readcount = instream.read(senddata,0,64);//从文件里再读取64字节的数据
}
}
}catch (IOException e){}
}
}
}
synchronized (bottomActivity.lockObject) {
while (!bottomActivity.ACK) {//如果ACK是false,发送线程就等待,直到ACK变成true
Log.e(">>@@","发送线程等待ACK的到来");
try {
bottomActivity.lockObject.wait();
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
bottomActivity.ACK = false;
}