我做一个小程序,是关于android手机扫描wifi信号,然后传送到电脑上的服务端。现在将代码copy过来,牛人帮忙看看那里出问题了。
========sever==================
package com.work;import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.LinkedList;
import java.util.List;
public class gpsLocwifiServer {
private final static int PORT = 30000;

public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(PORT);
System.out.println("Server start: ");
Socket socket = ss.accept();
new Thread(new ServerThread(socket)).start();
}
}//线程类
class ServerThread extends Thread {
Socket s = null;
ObjectInputStream objIn =  null;
List<wifiSignal> wifiSignals;
List<String> sList;

public ServerThread(Socket s) throws IOException {
this.s = s;
objIn = new ObjectInputStream(s.getInputStream());
sList = new LinkedList<String>();
}

public void run() {
try {
//接收数据
System.out.println("接收数据:");
sList = (List<String>)objIn.readObject(); for(int i = 0; i < sList.size(); i++){
System.out.println(sList.get(i).toString());
} }catch (Exception e) {
e.printStackTrace();

 }
 }===========client==================
package com.work;import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.LinearLayout.LayoutParams;public class GpsLocwifiActivity extends Activity {
private final static String TAG = "WiFiScan";
private final static int PORT = 30000;
private Button btnScanWifi;
private Button btnShowWifi;
private TextView txtShowList;
WifiManager mWifiManager = null;
private boolean isRunning = false;
private Handler handler;
private Runnable runnable;
Calendar calendar;
List<String> sList = new LinkedList<String>();
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        btnScanWifi = (Button)findViewById(R.id.scan_wifi);
        btnShowWifi = (Button)findViewById(R.id.show_wifi);
        txtShowList = (TextView)findViewById(R.id.show_list);        btnShowWifi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i(TAG, "onClick() handler.sent()");
txtShowList.setText("");
txtShowList.append("====开始扫描并发送====\n");
for(int i = 0; i < 10; i++) {
               sList.add("String:" + (i * 5));
}    
         QueryThread.start();
}
});
    }    private Thread QueryThread = new Thread(){
     public void run(){
     try {
     Log.i(TAG, "thread run()");
     Socket socket = new Socket("192.168.0.1", PORT);
     ObjectOutputStream objOut = new ObjectOutputStream(socket.getOutputStream());
txtShowList.append("开始传输数据:");
objOut.writeObject(sList);
txtShowList.append("数据传输完毕!!!");

objOut.close();
socket.close();

} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
     } 
    };
}
为了方便分析,我将问题简化了,我感觉主要的问题是出在ObjectoutputStream、ObjectInputStream这两个函数。在android模拟器里,点击发送按钮后,client端程序就没有反应了,sever端也无任何反应,接收不到任何数据。再次点击按钮,client端直接死掉,望牛人帮忙自己分析一下原因,不胜感激...