server.java    java程序,先在pc上运行
public class Server {
int serverPort=9898;
ServerSocket serverSocket=null;
OutputStream outputStream=null;
InputStream inputStream=null;
PrintWriter printWriter=null;
Socket socket=null;
BufferedReader bufferedReader=null;


public Server(){
try{
serverSocket=new ServerSocket(serverPort);//根据端口创建套接字
System.out.println("服务启动···");
socket=serverSocket.accept();//等待客户端连接
System.out.println("客户已连接\n");
}catch(Exception ex){
ex.printStackTrace();
}
try{
outputStream=socket.getOutputStream();

inputStream=socket.getInputStream();

printWriter=new PrintWriter(outputStream,true);

bufferedReader=new BufferedReader(new InputStreamReader(inputStream));

BufferedReader inBufferedReader=new BufferedReader(new InputStreamReader(System.in));

while(true)
{
String message=bufferedReader.readLine();

System.out.println("client:"+message);

if(message.equals("bye"))
break;

printWriter.println(message);
}
outputStream.close();
inputStream.close();
socket.close();
serverSocket.close();
System.out.println("disconnected````````");
}catch(Exception e){
e.printStackTrace();

}finally{

}
}
/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
new Server();
}}
main.javapublic class MainActivity extends Activity implements Runnable {
// LocationManager lManager;
// LocationListener locationListener;
// String locationProvider;

TextView chatmessage=null;

EditText sendmessage=null;

Button send_button=null;

static final String HOST="10.0.2.2";

static final int PORT=9898;

Socket socket=null;

BufferedReader bufferedReader=null;

PrintWriter printWriter=null;

String string="";


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chatmessage = (TextView) findViewById(R.id.textview1);
sendmessage=(EditText)findViewById(R.id.edittext1);
send_button=(Button)findViewById(R.id.button1);
try{
socket=new Socket(HOST,PORT);
bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));

printWriter=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);


}catch(Exception e){
e.printStackTrace();
CreateDialog(e.getMessage());
}


send_button.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
// TODO Auto-generated method stub
String message=sendmessage.getText().toString();
if(socket.isConnected()){
if(!socket.isOutputShutdown()){

printWriter.println(message);

chatmessage.setText(chatmessage.getText().toString()+"\n"+"client:"+message);

sendmessage.setText("");//清空edittext

}
}
}
});


new Thread(this).start();

}

public void CreateDialog(String message){

android.app.AlertDialog.Builder builder=new AlertDialog.Builder(this);

builder.setTitle("异常");

builder.setMessage(message);

builder.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{


public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub

}
}); 

builder.setNegativeButton("No", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub

}
});

builder.show();


}

public void run() {
// TODO Auto-generated method stub
try {
while(true){

if(socket.isConnected())
{
if(!socket.isInputShutdown())
{
if((string=bufferedReader.readLine())!=null)
{
Log.i("TAG", "++"+string);
string+="";
messenger.sendMessage(messenger.obtainMessage());

}
else{

}
}
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.w("TAG", "--"+e.toString());
}
}



public Handler messenger=new Handler(){
public void handleMessage(Message msg){
super.handleMessage(msg);
Log.i("TAG", "--"+msg);
chatmessage.setText(chatmessage.getText().toString()+"\n"+"server:"+string);

}

};


// public boolean onCreateOptionsMenu(Menu menu) {
// getMenuInflater().inflate(R.menu.activity_main, menu);
// return true;
// }
// }
main.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >    <TextView
        android:id="@+id/textview1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world"
       />
    <EditText
        android:inputType="text"
        android:id="@+id/edittext1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         />
<Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="selfDestruct"
        android:text="@string/app_name" />
</LinearLayout>error11-06 15:11:01.802: E/Trace(895): error opening trace file: No such file or directory (2)
11-06 15:11:07.972: E/AndroidRuntime(895): FATAL EXCEPTION: main
11-06 15:11:07.972: E/AndroidRuntime(895): java.lang.NullPointerException
11-06 15:11:07.972: E/AndroidRuntime(895):  at com.example.gpstest.MainActivity$2.onClick(MainActivity.java:82)
11-06 15:11:07.972: E/AndroidRuntime(895):  at android.view.View.performClick(View.java:4084)
11-06 15:11:07.972: E/AndroidRuntime(895):  at android.view.View$PerformClick.run(View.java:16966)
11-06 15:11:07.972: E/AndroidRuntime(895):  at android.os.Handler.handleCallback(Handler.java:615)
11-06 15:11:07.972: E/AndroidRuntime(895):  at android.os.Handler.dispatchMessage(Handler.java:92)
11-06 15:11:07.972: E/AndroidRuntime(895):  at android.os.Looper.loop(Looper.java:137)
11-06 15:11:07.972: E/AndroidRuntime(895):  at android.app.ActivityThread.main(ActivityThread.java:4745)
11-06 15:11:07.972: E/AndroidRuntime(895):  at java.lang.reflect.Method.invokeNative(Native Method)
11-06 15:11:07.972: E/AndroidRuntime(895):  at java.lang.reflect.Method.invoke(Method.java:511)
11-06 15:11:07.972: E/AndroidRuntime(895):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
11-06 15:11:07.972: E/AndroidRuntime(895):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-06 15:11:07.972: E/AndroidRuntime(895):  at dalvik.system.NativeStart.main(Native Method)