簡體   English   中英

通過互聯網進行android套接字通信

[英]android socket communication through internet

我正在嘗試在android和Windows之間進行套接字通信。 一切正常,直到我使用10.0.2.2地址,該地址是運行仿真器的計算機的環回。 但是,如果我將任何其他地址提供給Socket構造函數,則連接將超時。 我的目標是通過互聯網在手機和計算機之間進行通信。 我也在手機上嘗試過,所以我不認為這是防火牆問題。 這是我的代碼:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    try {
        clientSocket = new Socket("10.0.2.2", 48555);
        Log.d("Offdroid", "socket connected");
    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        System.out.println(e.toString());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        System.out.println(e.toString());
    }
}

public void connectServer(View button) {
    try {
        String message = "shutdown";
        byte[] messageBytes = message.getBytes("US-ASCII");
        int messageByteCount = messageBytes.length;
        byte[] messageSizeBytes = new byte[2];
        messageSizeBytes = intToByteArray(messageByteCount);

        byte[] sendBytes = concatenateArrays(messageSizeBytes, messageBytes);

        Log.d("Offdroid", Integer.toString(messageSizeBytes.length));

        clientSocket.setReceiveBufferSize(16);
        clientSocket.setSendBufferSize(512);
        OutputStream outStream = clientSocket.getOutputStream();
        //InputStream inStream = clientSocket.getInputStream();

        outStream.write(sendBytes, 0, sendBytes.length);
    } catch(Exception EX) {
        Log.e("Offdroid", EX.getMessage());
    }
}

我也在尋找Java內置函數,而不是將兩個字節數組放在一起的concatenateArrays函數。

編輯:

抱歉,也許我沒有提供足夠的信息。 我已經嘗試過用於互聯網連接的外部IP和局域網IP。 路由器上的端口轉發到我的計算機。 因此,如果我寫“ 192.168.1.101”或互聯網服務提供商提供的IP代替“ 10.0.2.2”,則我無法連接。

編輯:

好的,我發現這是我的防火牆。

Emulator使用與計算機相同的網絡,因此它將能夠將其路由到計算機。 但是,為了使手機與計算機連接,您必須指定一個不同的IP,它基本上是計算機的IP。

我猜您正在使用一些共享的網絡,並獲得此(10.0.2.2)IP。 您的計算機應直接連接到Internet,以便通過電話工作。

好的,我發現這是我的防火牆。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM