2012-07-09 33 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。

相关问题