0

ソケット接続に問題があります。次の行に null pionter 例外があると書かれています。

Socket client = new Socket(ip,8000);

しかし、IP は問題ありません。ポートも問題ありません。

完全なコードは次のとおりです。

public class socket { 

public static void out(String out, Context context){

    final String PREFS_NAME = "SAVEDIP";
    final String PREF_IP = "";
    String ip = null;
    SharedPreferences pref = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
    ip = pref.getString(PREF_IP, "");
    Log.e("IP", ip);


    try {
        Socket client = new Socket(ip,8000);    
        //PrintWriter output = new PrintWriter(client.getOutputStream(), true);
        //BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
        //output.println(out);
        Toast.makeText(context, "OK", Toast.LENGTH_SHORT).show();
        //output.close();
        //in.close();
        client.close();
    } catch (UnknownHostException e) {
        Log.e("TAG", "UnknowHostExeption");
        e.printStackTrace();
    } 
    catch (IOException e) {
        Log.e("TAG", "IOExeption");
        e.printStackTrace();
    }
}

}

私はこれでコンテキストとテキストを渡しています:

c = getApplicationContext();
socket.out("exit", c);

私が得るエラーは次のとおりです。

    04-23 15:58:30.577: E/TAG(26540): IOExeption
04-23 15:58:30.577: W/System.err(26540): java.net.SocketException: The operation timed out
04-23 15:58:30.577: W/System.err(26540):    at org.apache.harmony.luni.platform.OSNetworkSystem.connectStreamWithTimeoutSocketImpl(Native Method)
04-23 15:58:30.577: W/System.err(26540):    at org.apache.harmony.luni.platform.OSNetworkSystem.connect(OSNetworkSystem.java:115)
04-23 15:58:30.577: W/System.err(26540):    at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:244)
04-23 15:58:30.577: W/System.err(26540):    at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:219)
04-23 15:58:30.577: W/System.err(26540):    at java.net.Socket.startupSocket(Socket.java:781)
04-23 15:58:30.577: W/System.err(26540):    at java.net.Socket.tryAllAddresses(Socket.java:194)
04-23 15:58:30.577: W/System.err(26540):    at java.net.Socket.<init>(Socket.java:258)
04-23 15:58:30.587: W/System.err(26540):    at java.net.Socket.<init>(Socket.java:222)
04-23 15:58:30.587: W/System.err(26540):    at com.example.andremote.socket.out(socket.java:28)
04-23 15:58:30.587: W/System.err(26540):    at com.example.andremote.Remote$11.onClick(Remote.java:175)
04-23 15:58:30.587: W/System.err(26540):    at android.view.View.performClick(View.java:2408)
04-23 15:58:30.597: W/System.err(26540):    at android.view.View$PerformClick.run(View.java:8817)
04-23 15:58:30.597: W/System.err(26540):    at android.os.Handler.handleCallback(Handler.java:587)
04-23 15:58:30.597: W/System.err(26540):    at android.os.Handler.dispatchMessage(Handler.java:92)
04-23 15:58:30.597: W/System.err(26540):    at android.os.Looper.loop(Looper.java:143)
04-23 15:58:30.597: W/System.err(26540):    at android.app.ActivityThread.main(ActivityThread.java:4914)
04-23 15:58:30.607: W/System.err(26540):    at java.lang.reflect.Method.invokeNative(Native Method)
04-23 15:58:30.607: W/System.err(26540):    at java.lang.reflect.Method.invoke(Method.java:521)
04-23 15:58:30.607: W/System.err(26540):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
04-23 15:58:30.607: W/System.err(26540):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
04-23 15:58:30.607: W/System.err(26540):    at dalvik.system.NativeStart.main(Native Method)

どこで間違えたのか教えてください。ソロティウンが見つかりません!

4

1 に答える 1

0

どうやらこの線で

ip = pref.getString(PREF_IP, "");

右側にnullが返されるため、ip変数はnullまたは無効な値を取得するため、ip変数(ホスト名)が無効であるため、パラメーターとしてソケットコンストラクターに渡すと、IOExceptionが生成されます。ip 変数を null に対してチェックするか、Socket コンストラクターに渡す前にチェックしてください。

于 2013-04-23T14:11:02.533 に答える