【问题标题】:Android Application cannot open socket to connect ServerAndroid 应用程序无法打开套接字连接服务器
【发布时间】:2010-12-18 20:05:34
【问题描述】:

我正在开发一个 Android 应用程序,应用程序需要连接服务器。 这是客户端代码。 79.123.176.59 是服务器的 IP 地址。应用程序和服务器连接到同一网络。当我执行我的应用程序时,它永远不会打开套接字。所以它无法连接到服务器。

当我执行与应用程序分开的客户端代码时,它工作得很好!

有什么问题?你有什么建议吗 ?

谢谢!

int port=8080;
   Socket s;
   String msg="";
   String err="error";
   try{
       Log.d("Client","Socket");
       s=new Socket("79.123.176.59",port);
       Log.d("Client","Socket opened");
       OutputStreamWriter osw=new OutputStreamWriter(s.getOutputStream());
       PrintWriter pw=new PrintWriter(osw);
       BufferedReader br1=new BufferedReader(new InputStreamReader(s.getInputStream()));
       Log.d("Client","Streams");
       pw.println(latitude + " " + longitude );
       Log.d("Client","String send");
       pw.flush();
       msg=br1.readLine();
       return msg;
   }
   catch ( Exception e )
   {
       return err;
   }

【问题讨论】:

    标签: android sockets client


    【解决方案1】:

    您没有关闭套接字,也没有关闭流。因此,您可能无法连接,因为您的设备被您之前打开的套接字阻塞。 试着把它放在你的 catch 之后(不要在 try/catch 中返回)

    finally {
    
            pw.close();
            br1.close();
            s.close();
    }
    

    【讨论】:

      【解决方案2】:

      TCP SOCKET on Android你可以关注这个帖子,代码也在那里。

      【讨论】:

        【解决方案3】:

        Socket 构造函数不接受字符串,我什至不明白它是如何编译的?

        试试这个

        s=new Socket(new InetAddress.getByName("79.123.176.59"),port)
        

        【讨论】:

        • 请检查。 new InetAddress.getByName("79.123.176.59") 是错误的,因为 getByName 是静态方法 s=new Socket(InetAddress.getByName("79.123.176.59"),port)
        猜你喜欢
        • 2016-03-10
        • 2021-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-18
        相关资源
        最近更新 更多