我已經寫了一個服務器端客戶端模型的android程序。我的電腦充當服務器,AVD充當客戶端。我使用10.0.2.2作爲服務器地址來連接,但服務器端沒有收到任何信息。當客戶端是一個普通的Java程序時,我的服務器工作正常。當客戶端是Android模擬器時會發生問題。我一直在研究這個問題很長時間,但我仍然沒有解決方案。希望有人能幫助我,謝謝! 我的代碼: 服務器:Android模擬器和PC服務器套接字通信
import java.net.*;
import java.io.*;
public class Server {
public static void main(String[] args) throws IOException{
ServerSocket server = new ServerSocket(6002);
while(true){
Socket client = server.accept();
BufferedReader in= new BufferedReader(new InputStreamReader(client.getInputStream()));
System.out.println(in.readLine());
}
}
}
客戶端:
public class modules extends Activity {
private ListView myListView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.modules);
myListView = (ListView)findViewById(R.id.listView1);
Intent intent = getIntent();
Bundle b = intent.getExtras();
String semester = b.getString("semester");
String subject = b.getString("subject");
try {
Socket socket = new Socket("10.0.2.2",6002);
PrintWriter out=new PrintWriter(socket.getOutputStream(),true);
String s1 = "SEME" + semester;
out.println(s1);
out.flush();
String s2 = "SUBJ" + subject;
out.println(s2);
out.flush();
socket.close();
} catch(UnknowHostException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
}
}
}
在logcat中有喜歡的錯誤:
android.os.NetworkOnMainThreadException;
,也錯誤與嚴格模式:
07-22 14:24:24.892: E/AndroidRuntime(759): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099).
我在清單xml文件中添加了用戶權限,因此問題必須是其他內容。
logcat中是否有錯誤?權限可能? – charlypu 2012-07-22 13:51:59
*有效的Java#65:不要忽略異常。*更少執行「一刀切」的異常* *完全忽略*。毫不奇怪,你有問題試圖找到原因... – davidcesarino 2012-07-22 14:05:52
非常感謝你們!我在這裏是新的,你的好意真的讓我印象深刻! – starrapier 2012-07-22 14:13:06