2011-05-11 112 views
0

我想在android中創建聊天應用程序。我使它像使用套接字的簡單Java應用程序,但它不工作。請提出我應該做的事情。如何在android中創建聊天服務器和客戶端

這是我的代碼。在點擊按鈕,應用程序正在關閉..

package pack.chat; 

import android.app.Activity; 
import android.content.DialogInterface.OnClickListener; 
import android.content.Intent; 
import android.content.SharedPreferences.Editor; 

import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.*; 
import java.io.*; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 



public class chatAct extends Activity implements android.view.View.OnClickListener { 
    /** Called when the activity is first created. */ 

    PrintWriter out; 
    BufferedReader in ; 
    Socket socketClient; 
    EditText edit1; 
    String editTextString; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     try{ 
      socketClient= new Socket("hddlntd6014578 ", 8180); 
      out = new PrintWriter(socketClient.getOutputStream(), true); 
      in = new BufferedReader(new InputStreamReader(socketClient.getInputStream())); 
     } 
     catch (UnknownHostException e){ 
      System.out.println("Host cannt be reached"); 
     } 
     catch (IOException i){ 
      System.out.println("IO cannt be found"); 
     } 


     Button searchButton = (Button)findViewById(R.id.Button01); 
     searchButton.setOnClickListener(this); 

     // InputStreamReader input= new InputStreamReader(); 
    // BufferedReader stringForServer= new BufferedReader(new InputStreamReader(R.id.EditText01)); 

    } 
    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     edit1= (EditText)findViewById(R.id.EditText01); 

      System.out.println(edit1.getText().toString()); 

       String forServer = edit1.getText().toString(); 
      out.println(forServer); 
    } 
} 

你可以提取我是一隻新的蜜蜂。請提出建議。如果你有代碼,並且你可以和我分享。

登錄CAT ::

05-11 15:54:39.614: WARN/dalvikvm(370): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
05-11 15:54:39.624: ERROR/AndroidRuntime(370): FATAL EXCEPTION: main 
05-11 15:54:39.624: ERROR/AndroidRuntime(370): java.lang.NullPointerException 
05-11 15:54:39.624: ERROR/AndroidRuntime(370):  at pack.chat.chatAct.onClick(chatAct.java:61) 
05-11 15:54:39.624: ERROR/AndroidRuntime(370):  at android.view.View.performClick(View.java:2485) 
05-11 15:54:39.624: ERROR/AndroidRuntime(370):  at android.view.View$PerformClick.run(View.java:9080) 
05-11 15:54:39.624: ERROR/AndroidRuntime(370):  at android.os.Handler.handleCallback(Handler.java:587) 
05-11 15:54:39.624: ERROR/AndroidRuntime(370):  at android.os.Handler.dispatchMessage(Handler.java:92) 
05-11 15:54:39.624: ERROR/AndroidRuntime(370):  at android.os.Looper.loop(Looper.java:123) 
05-11 15:54:39.624: ERROR/AndroidRuntime(370):  at android.app.ActivityThread.main(ActivityThread.java:3647) 
05-11 15:54:39.624: ERROR/AndroidRuntime(370):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-11 15:54:39.624: ERROR/AndroidRuntime(370):  at java.lang.reflect.Method.invoke(Method.java:507) 
05-11 15:54:39.624: ERROR/AndroidRuntime(370):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
05-11 15:54:39.624: ERROR/AndroidRuntime(370):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
05-11 15:54:39.624: ERROR/AndroidRuntime(370):  at dalvik.system.NativeStart.main(Native Method) 
05-11 15:54:39.634: WARN/ActivityManager(61): Force finishing activity pack.chat/.chatAct 
05-11 15:54:40.164: WARN/ActivityManager(61): Activity pause timeout for HistoryRecord{40672790 pack.chat/.chatAct} 
+0

你能更具體地說明什麼不起作用嗎? – Pepe

+0

請從logcat輸出添加堆棧跟蹤。 –

+0

@Stuti:你有沒有任何工作示例或鏈接可以幫助我製作一個聊天應用程序 –

回答

2

您沒有定義變量out。所以out.print*將NPE。 您可以在該線上使用System.out.print*或在使用前初始化out

查看代碼時,我也忽略了這一點:)如果您使用Eclipse之類的IDE,請嘗試爲潛在的NPE等增加警告級別。

+0

thnx rupp但我編輯了文本,我也可以提取它的數據。 – Stuti

+0

那麼第61行是什麼? chatAct.java:61 –

+0

out.println(forserver);可以有任何我用來創建套接字連接的PC名稱中的錯誤,Ihav聽說模擬器需要一些其他的IP。 – Stuti

0

我已經做一個應用程序使用C2DM(郵件推送),這是Android設備之間發送數據的方式喵聊天。我想你應該把你的C2DM雲端設備用於製作這個應用的android的信息技術。 我希望這是幫助。

+0

Thnx親愛的..但我不知道如何在C2DM中工作。你能跟我分享一些東西嗎? – Stuti