关于android socket通信接收服务器数据问题
先说一下我遇到的问题,我想通过android手机socket通信接收server发送过来的16进制数据,下面是我客户端的代码,当我写的应用程序只有这一个activity时,测试是可是实现 从server发送的数据的。但是当我把这个activity加入到一个应用程序中,通过A界面跳转到这个界面后,再点击button,程序就会一直没响应,通过logcat,发现程序停在了nReadLen = dis.read(buffer, nIdx, nTotalLen - nIdx);处。不知道问题出现在什么地方求解释,为什么相同的代码,经过这么一挪动们就出现这个问题,麻烦各位给分析一下问题所在,谢谢,
package com.carman.activity;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import com.carman.activity.R;
public class ReceiveDataActivity extends Activity {
private TextView textview1;
private Button btn;
byte[] relayState = new byte[2];//保存终端设备状态
HandlerThread handlerThread = new HandlerThread("handler_thread");
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findView();
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Socket socket = null;
int objContentleng = 24;
//fc 4b 1f 25
byte[] buffer = new byte[objContentleng];
byte[] relayState = new byte[2];// 第一位是0x25地址的状态,第二位为0x4b地址的状态
int nIdx = 0;
int nTotalLen = buffer.length;
int nReadLen = 0;
try {
socket = new Socket("192.168.1.123",502);
DataInputStream dis = new DataInputStream(socket.getInputStream());
while (nIdx < nTotalLen)
{
nReadLen = dis.read(buffer, nIdx, nTotalLen - nIdx);
if (nReadLen > 0)
{
nIdx = nIdx + nReadLen;
}
else
{
break;
}
}
for(int i = 0; i < objContentleng;i++)
System.out.println(buffer[i]);
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
textview1.setText(buffer.toString());
}
});
}
public void findView(){
textview1 = (TextView)findViewById(R.id.textView1);
btn = (Button)findViewById(R.id.button1);
}
}