2012-07-09 71 views
2

我正試圖發送消息到服務器並獲得響應。 當我嘗試打開一個套接字我得到一個異常:使用套接字與服務器通信

我已經加入到AndroidManifest.xml中下面幾行:

< uses-permission android:name="android.permission.INTERNET" /> 
< uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

應用標籤前。
這裏是我的代碼有:

   String IP = "81.218.150.49"; 
       int port = 32001; 
       Socket my_socket = new Socket(IP, port); //Here i get exception !! 

       BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(my_socket.getOutputStream(), "UTF8")); 
       wr.write("mobiwize server login test testpswd\r\n"); 

       // Send data 
       wr.flush(); 

       // Get response 
       StringBuffer sb = new StringBuffer(""); 
       BufferedReader rd = new BufferedReader(new InputStreamReader(my_socket.getInputStream())); 
       String line =""; 
       String NL = System.getProperty("line.separator"); 
       while ((line = rd.readLine()) != null) { 
        sb.append(line + NL); 
       } 
       httpStuff.setText(sb); 

       rd.close(); 
       wr.close(); 
      } catch (Exception e) { 
      } 

,我真的很感謝您的幫助!

+1

你有什麼異常? – UVM 2012-07-09 07:36:18

+0

發佈什麼類型的異常。 – 2012-07-09 07:38:05

+0

Socket有兩個不同的期望:UnknownHostException,IOException。但是當我加上趕上它並沒有抓住他們。只有一般的捕獲(例外e)起作用。 \t \t \t \t \t \t \t \t \t \t \t趕上(例外五){ \t \t \t \t \t \t \t \t \t} – SpaceMan 2012-07-09 08:08:40

回答

0

我在Android中使用時遇到了同樣的問題,但它在J2ee Java程序中運行良好,我建議您使用一個方法調用這個新的套接字,使用相同的代碼。希望它會幫助它對我做..

+0

Saqib,感謝您的答案,我已經嘗試過,但它並沒有幫助 – SpaceMan 2012-07-09 08:40:55

+0

爲了調試的目的,首先嚐試使用一個PC的套接字連接(使用new關鍵字)另一個(IP 81.218.150.49),而不是你的Android。在PC中調試更容易。 – 2012-07-09 21:55:14

0

我懷疑你有安全錯誤。您列出的IP地址不允許您建立套接字連接。嘗試另一個您知道您的計算機可以連接的IP。使用FTP,rlogin或其他軟件測試IP的安全性。

我假設你不是試圖破解別人的電腦或iMac電腦:-)

+0

感謝您的回答,我不想破解任何電腦。我用IVT Tel Net來做同樣的工作,還有其他的想法嗎? – SpaceMan 2012-07-09 08:28:59

+0

也許端口32001不是目標PC中的有效端口。使用IVT TElnet使用的端口號。像... Socket my_socket = new Socket(IP,telnet port); – 2012-07-09 21:57:00

+0

@SpaceMan,爲了進行調試,首先嚐試使用從一臺PC到另一臺PC(IP 81.218.150.49)的套接字連接(使用new關鍵字),而不是使用Android。在PC中調試更容易。 – 2012-07-09 21:58:00

1

試試這個....

如果要訪問此服務器

with IP: 81.218.150.49 through Internet, then it must 
    be your static ip, rather than an dynamic one. 

2.嘗試運行此代碼與私人IP地址或公共IP地址是分配給您的電腦局域網(即Without internet..JUST WITH WIRELESS CONNECTION)

3.私人IP或公共IP在您上網之前沒有任何意義..直到您可以使用它作爲它的局域網。

4.專用IP範圍

A類:10.0.0.0 - 10.0.0.255 B類:172.16.0.0 - 172.31.255.255 C類:192.168.0.0 - 192.168.255.255

5.公共由您的服務提供商提供,這將是任何人在私人IP範圍外。如果你的ip不是靜態的,你幾乎沒有或者沒有機會通過互聯網訪問服務器,有一些網站會給你的動態IP提供靜態ip。

相關問題