2

大家好,我正在尝试创建一个使用套接字连接的应用程序,我遇到了一些示例,当我在 2.3.3 上运行下面的代码时,它运行良好,在 3.0 中同样崩溃。

package com.simple.client;

import android.app.Activity;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.os.Bundle;

public class SimpleClientActivity extends Activity {
EditText textOut;
TextView textIn;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    textOut = (EditText)findViewById(R.id.textout);
    Button buttonSend = (Button)findViewById(R.id.send);
    textIn = (TextView)findViewById(R.id.textin);
    buttonSend.setOnClickListener(buttonSendOnClickListener);
}

Button.OnClickListener buttonSendOnClickListener
= new Button.OnClickListener(){

public void onClick(View arg0) {
// TODO Auto-generated method stub
Socket socket = null;
DataOutputStream dataOutputStream = null;
DataInputStream dataInputStream = null;

try {
 socket = new Socket("172.16.2.172", 8899);
 dataOutputStream = new DataOutputStream(socket.getOutputStream());
 dataInputStream = new DataInputStream(socket.getInputStream());
 dataOutputStream.writeUTF(textOut.getText().toString());
 textIn.setText(dataInputStream.readUTF());
} catch (UnknownHostException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
} catch (IOException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 e.printStackTrace();
}
finally{
 if (socket != null){
  try {
   socket.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 if (dataOutputStream != null){
  try {
   dataOutputStream.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 if (dataInputStream != null){
  try {
   dataInputStream.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   }
  }
 }
}};
}

我已经尝试了所有但无法弄清楚发生了什么,

4

2 回答 2

2

我的猜测是,由StrictMode.ThreadPolicy引起的错误。在 android 3.0 中,您不能在同一个 UI 线程中访问网络。

于 2012-05-30T10:27:38.003 回答
1

您的布局是否有多个资源文件夹?如果是,也许你没有相关的布局。

于 2012-05-30T10:40:41.300 回答