2012-09-03 58 views
0

程序運行後,點擊發送按鈕,然後在彈出的對話框表示,該計劃已經退出。客戶端的Socket程序錯誤

我不知道是什麼問題,如何解決呢? 有沒有人有同樣的問題,你能幫幫我嗎?

package com.secion9.clienttest; 

import android.os.Bundle; 
import android.app.Activity; 
import android.widget.*; 
import java.net.Socket; 
import java.io.IOException; 
import java.io.OutputStream; 
import android.view.View; 
import android.view.View.OnClickListener; 
public class ClientActivity extends Activity { 

Button btSend; 
EditText etMsg; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_client); 
    btSend=(Button)this.findViewById(R.id.button1); 
    etMsg=(EditText)this.findViewById(R.id.EditText1); 
    btSend.setOnClickListener(
    new OnClickListener(){ 
    public void onClick(View v) 
    { 
try 
{ 

Socket socket=new Socket("127.0.0.1",5050); 
OutputStream outputStream=socket.getOutputStream(); 
byte[] buffer=etMsg.getText().toString().getBytes(); 
outputStream.write(buffer); 
outputStream.flush(); 

} 
catch(IOException e) 
{ 
e.printStackTrace(); 
} 
    } 
    }); 
    } 
} 

logcat的

09-02 08:24:31.189: E/Trace(627): error opening trace file: No such file or directory (2) 
09-02 08:24:32.259: D/gralloc_goldfish(627): Emulator without GPU emulation detected. 
09-02 08:24:32.598: I/Choreographer(627): Skipped 40 frames! The application may be doing too much work on its main thread. 
09-02 08:25:04.471: D/AndroidRuntime(627): Shutting down VM 
09-02 08:25:04.471: W/dalvikvm(627): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 
09-02 08:25:04.539: E/AndroidRuntime(627): FATAL EXCEPTION: main 
09-02 08:25:04.539: E/AndroidRuntime(627): android.os.NetworkOnMainThreadException 
09-02 08:25:04.539: E/AndroidRuntime(627): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117) 
09-02 08:25:04.539: E/AndroidRuntime(627): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84) 
09-02 08:25:04.539: E/AndroidRuntime(627): at libcore.io.IoBridge.connectErrno(IoBridge.java:127) 
09-02 08:25:04.539: E/AndroidRuntime(627): at libcore.io.IoBridge.connect(IoBridge.java:112) 
09-02 08:25:04.539: E/AndroidRuntime(627): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 
09-02 08:25:04.539: E/AndroidRuntime(627): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
09-02 08:25:04.539: E/AndroidRuntime(627): at java.net.Socket.startupSocket(Socket.java:566) 
09-02 08:25:04.539: E/AndroidRuntime(627): at java.net.Socket.tryAllAddresses(Socket.java:127) 
09-02 08:25:04.539: E/AndroidRuntime(627): at java.net.Socket.<init>(Socket.java:177) 
09-02 08:25:04.539: E/AndroidRuntime(627): at java.net.Socket.<init>(Socket.java:149) 
09-02 08:25:04.539: E/AndroidRuntime(627): at com.secion9.clienttest.ClientActivity$1.onClick(ClientActivity.java:31) 
09-02 08:25:04.539: E/AndroidRuntime(627): at android.view.View.performClick(View.java:4084) 
09-02 08:25:04.539: E/AndroidRuntime(627): at android.view.View$PerformClick.run(View.java:16966) 
09-02 08:25:04.539: E/AndroidRuntime(627): at android.os.Handler.handleCallback(Handler.java:615) 
09-02 08:25:04.539: E/AndroidRuntime(627): at android.os.Handler.dispatchMessage(Handler.java:92) 
09-02 08:25:04.539: E/AndroidRuntime(627): at android.os.Looper.loop(Looper.java:137) 
09-02 08:25:04.539: E/AndroidRuntime(627): at android.app.ActivityThread.main(ActivityThread.java:4745) 
09-02 08:25:04.539: E/AndroidRuntime(627): at java.lang.reflect.Method.invokeNative(Native Method) 
09-02 08:25:04.539: E/AndroidRuntime(627): at java.lang.reflect.Method.invoke(Method.java:511) 
09-02 08:25:04.539: E/AndroidRuntime(627): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
09-02 08:25:04.539: E/AndroidRuntime(627): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
09-02 08:25:04.539: E/AndroidRuntime(627): at dalvik.system.NativeStart.main(Native Method) 
09-02 08:25:07.079: I/Process(627): Sending signal. PID: 627 SIG: 9 
+0

從3.0開始,在嚴格模式下,您無法運行n/w主線程更改爲異步任務 –

+0

google NetworkOnMainException。這是一個已知的陷阱。 – njzk2

回答

0

已經把在AndroidManifest.xml上網權限?

問候,

0
Skipped 40 frames! The application may be doing too much work on its main thread. 

NetworkOnMainThreadException 

有沒有告訴你,你堵爲主線,這將導致和ANR和應用程序可以被打死:)

嘗試在後臺線程或AsyncTask上實現您的網絡資源

0

根據在[Android開發]的文件[1]:

被拋出時,異常應用程序嘗試在其主線程上執行 聯網操作。

這僅適用於針對Honeycomb SDK或 的應用程序。針對早期SDK版本的應用程序允許在其主要事件循環線程上執行聯網,但不鼓勵 。

因此,您需要定位一個較低的SDK或創建一個用於處理網絡連接的新線程。