2011-02-08 161 views
1

我想讓我的Android應用程序通過一個小型網絡發送Telnet命令到另一個設備,並且每當我聲明DatagramSocket時,它拋出一個SocketException說:地址族不支持協議。這裏是我的代碼如下:Android應用程序:地址家庭不支持協議

try { 
     addr = InetAddress.getByName(ipAddress); 
     sock = new DatagramSocket(); //SocketException created here 

     //first message - cmd 
     length = cmd.length(); 
     message = cmd.getBytes(); 
     packet = new DatagramPacket(message, length, addr, portAddr); 
     sock.send(packet); 

     //second message - highCMD 
     length = highCMD.length(); 
     message = highCMD.getBytes(); 
     packet = new DatagramPacket(message, length, addr, portAddr); 
     sock.send(packet); 

     sock.close(); 

    } catch (SocketException e) { 
     AlertDialog alertDialog; 
     alertDialog = new AlertDialog.Builder(v.getContext()).create(); 
     alertDialog.setTitle("Send High CMD Error!"); 
     alertDialog.setMessage("SocketException"); 
     alertDialog.show(); 
    } catch (IOException e){ 
     AlertDialog alertDialog; 
     alertDialog = new AlertDialog.Builder(v.getContext()).create(); 
     alertDialog.setTitle("Send High CMD Error!"); 
     alertDialog.setMessage("IOException"); 
     alertDialog.show(); 
    } 
} 

可能的解決方案,我認爲,但還沒有做出工作:

  1. 模擬器需要端口,通過開發機,重定向需要使用的端口?
  2. 我沒有使用正確版本的IP4/6,這是如何設置的?
  3. 設備使用TCP協議,也許我使用錯誤的套接字類型?

其他重要信息:

  1. 我只有在模擬器上運行此
  2. 開發機發送正確命令從Telnet命令提示符
  3. 網絡由開發機,路由器和設備。

更新:11年2月9日

我已經改變了這個代碼以下,但我仍然得到一個例外:

try { 
     addr = InetAddress.getByName(ipAddress); 
     socketAddress = new InetSocketAddress(addr, portAddr); 

     sock = new Socket(); 
     sock.connect(socketAddress); 
     sock.close(); 

    } catch (SocketException e) { 
     AlertDialog alertDialog; 
     alertDialog = new AlertDialog.Builder(v.getContext()).create(); 
     alertDialog.setTitle("Send High CMD Error!"); 
     alertDialog.setMessage("SocketException" + e.getMessage()); 
     alertDialog.show(); 
    } 

從異常消息說「權限被拒絕」。這是否意味着我的設備阻塞了連接?

回答

3

你已經編寫了錯誤的方法。 Telnet使用TCP,它使用流(面向連接)套接字,而不是UDP使用的數據報套接字。

搜索tcp的例子。

+0

我已經用你的建議(見上面)更新了代碼,但是當試圖建立連接時,我仍然得到一個SocketException。 – yoshibluehaha 2011-02-09 22:10:53

相關問題