2011-05-11 2 views
0

私はアンドロイドでチャットアプリケーションを作りたいと思っています。ソケットを使った単純なJavaアプリケーションのようにしていましたが、動作しません。 Plsは私が何をすべきかを示唆している。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

私はすでにこれは、Androidデバイス間でデータを送信するためのMEW方法です(プッシュ型電子メール)C2DMを使ってチャット用のアプリケーションを作成しています。私はあなたがこのアプリケーションを作るためのアンドロイドのデバイスメッセージング技術へのC2DMクラウドすべきだと思います。 私はこれが助けてくれることを願っています。

+0

Thnx親愛なる..しかし、私はC2DMでの作業方法を知らない。あなたは私と何かを共有することができます – Stuti

関連する問題