package android.socket;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
服务器端代码:
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.security.PublicKey;
import android.R.integer;
import android.app.Activity;
import android.os.Bundle;
import android.os.Looper;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;public class SocketActivity extends Activity {
/** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); final EditText editText=(EditText)findViewById(R.id.editText);
    final Button button=(Button)findViewById(R.id.button1);
button.setText("开始");
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
socket_class socket_class = null;
if (button.getText().equals("开始")) {
button.setText("结束");

try {
int PORT = Integer.parseInt(editText.getText().toString());
socket_class = new socket_class(PORT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (socket_class != null) {
socket_class.start();
}
}
else{
button.setText("开始");
//socket_class.destroy();
return;
}
}
});
} public class socket_class extends Thread {
private ServerSocket server = null;
private BufferedWriter writer;
private BufferedReader reader;
TextView textView = (TextView) findViewById(R.id.textView1);
public socket_class(int PORT) throws IOException {
try {
server = new ServerSocket(PORT);
//textView.setText("开始监听...");
Toast.makeText(getApplicationContext(), "开始监听....",1).show();
} catch (Exception e) {
//textView.setText("出现异常");
Toast.makeText(getApplicationContext(), "端口已经被占用....",1).show();
return;
}
}
public void run() {
Looper.prepare();
Socket client;
String txt;
try {
while (true) {
// textView.setText("正在连接,请等待..");
Toast.makeText(getApplicationContext(), "正在连接,请等待....", 5)
.show();
client = server.accept();
try {
reader = new BufferedReader(new InputStreamReader(
client.getInputStream()));
// textView.setText("正在接受客户端发来的消息..");
Toast.makeText(getApplicationContext(),
"正在接受客户端发来的消息....", 2).show();
txt = "Sever send:" + reader.readLine();
textView.setText(txt);
writer = new BufferedWriter(new OutputStreamWriter(
client.getOutputStream()));
writer.write(txt + "\n");
writer.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
reader.close();
writer.close();
client.close();
// textView.setText("client closed..");
Toast.makeText(getApplicationContext(), "关闭....", 2)
.show();
}
Thread.sleep(3000);
}
} catch (IOException e) {
// textView.setText("" + e.getMessage());
Toast.makeText(getApplicationContext(),
"...." + e.getMessage(), 2).show();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Looper.loop();
}
}
}
客户端代码:
package sd.a;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class AActivity extends Activity { 
    private EditText editText;
private TextView textView;
private Button chatok;
Socket socket=null;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);        
        editText = (EditText) this.findViewById(R.id.editText);
        textView = (TextView) this.findViewById(R.id.textView);
chatok = (Button) this.findViewById(R.id.chatOk);
chatok.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
try {
socket = new Socket("10.0.2.2", 8192);
if (socket.isConnected()) {
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()));
writer.write(editText.getText().toString());
writer.flush();
BufferedReader reader = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
String txt = reader.readLine();
textView.setText(txt); } else {
textView.setText("连接失败");
}
} catch (UnknownHostException e) {
textView.setText(e.getMessage());
e.printStackTrace();
} catch (IOException e) {
textView.setText(e.getMessage());
e.printStackTrace();
}
}
});
    }
}
经过测试,两个虚拟机之间不能通信,客户端打开就卡死了,哪位高手帮忙给看看怎么回事????
跪求!!!!!!!