0

私は奇妙な問題を抱えています。私はソケットを作成し、それに IP 192.168.43.255 を与えています。InetAddress.getByName(IP) を使用すると、以下のログに示すように、IP に / が追加されます。なぜこれが起こっているのですか??

ここに私のコードがあります

public class ServerCom extends AsyncTask<String, Void , String>{

private int port=9999;
private String IP="192.168.43.255";
private BufferedReader input;
private Socket socket;
private DataOutputStream toSer;
private InetAddress serverAddr;
private String LocationID;
File file;FileWriter writer;

@Override
protected String doInBackground(String... RSS) {
    // TODO Auto-generated method stub
    Log.d("s","async");

    SandboxView.Locate=false;
    try {
            serverAddr = InetAddress.getByName(IP);
            socket = new Socket(serverAddr, port);
            toSer = new DataOutputStream(socket.getOutputStream());
            input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        } catch (UnknownHostException e2) {
            // TODO Auto-generated catch block
            e2.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    // send result to server

    try {
        toSer.writeBytes(RSS[0]+"\n");
        //get the response from server
        LocationID=input.readLine();

        toSer.close();
        socket.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }   

    return LocationID;
}
  protected void onPostExecute(String result)
  {     
            super.onPostExecute(result);
            //dismiss progressdialog.
            //update ui
            MainActivity.LocationID=LocationID;
            SandboxView.Localization=MainActivity.CH2.getLocation(LocationID);
            try {
                writer = new FileWriter(file, true);
                writer.append("room :"+LocationID+"\n");
                writer.append(SandboxView.Localization.x+" "+SandboxView.Localization.y+"\n");
                writer.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            MainActivity.view.invalidate();

            SandboxView.Locate=true;
  }
@Override
protected void onPreExecute() {
        super.onPreExecute();

}

}

05-16 17:53:16.331: W/System.err(3495): java.net.ConnectException: /192.168.43.255:9999 - Network is unreachable
4

1 に答える 1

2

これは実際には IP アドレスに / を追加するわけではありませんが、InetAddress.toString() によって出力されるアドレスの形式では、ホスト名とホスト アドレスを区切るために / が使用されます。ここを参照してください。そのため、/ は実際にはアドレスに追加されているわけではなく、ログに表示されているだけです。

于 2014-05-16T16:05:41.963 に答える