使用Socket与服务器通信

时间:2012-07-09 07:32:47

标签: java android sockets

我正在尝试向服务器发送消息并获取响应。 当我尝试打开一个套接字时,我得到一个例外:

我在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) {
            }

我真的非常感谢你的帮助!

3 个答案:

答案 0 :(得分:1)

试试这个......

1。如果要访问此服务器

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

2. 尝试使用在LAN中分配给您的电脑的私人IP地址或公共IP地址运行此代码(例如Without internet..JUST WITH WIRELESS CONNECTION)

第3。在您使用互联网之前,私人IP或公共IP没有任何意义。然后,您可以同时使用它作为LAN。

4. 私人广告系列

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。 Public由您的服务提供商提供,该服务提供商将是私人IP范围内的任何人。如果您的IP不是静态的,那么您很少或没有机会通过互联网访问服务器,有些网站会从动态IP中提供静态IP。

答案 1 :(得分:0)

我在Android中使用它时遇到了同样的问题,而它在J2ee Java程序中运行正常,我建议你使用方法调用这个新的套接字,使用相同的代码。希望它会对我有所帮助。

答案 2 :(得分:0)

我怀疑你遇到了安全错误。您列出的IP地址不允许您建立套接字连接。尝试另一个知道您的计算机可以与之建立联系的IP。使用FTP,rlogin等测试IP的安全性。

我认为你不是想破解别人的PC或iMac: - )

相关问题