2014-02-19 45 views
0

我一直在服务器/客户端应用程序中工作,需要从我的计算机上工作的服务器获取小时。我的Android应用程序中未连接套接字

当我尝试在手机上运行此应用程序时,它说SOCKET NOT CONNECTED。我尝试了一切,但仍然无法正常工作。

线程正在工作,但套接字未连接!

权限我用:

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

的MainActivity.java是:

package com.example.clientehora; 

/* imports */ 


public class MainActivity extends Activity { 

    Socket socket = new Socket(); 
    String SERVER_IP = "10.215.19.41"; 
    int SERVERPORT = 2000; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     new Thread(new ClientThread()).start(); 

    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 


    public void ejecutar(View view) { 
     try { 

      System.out.println("Hola amigo, si me presionaste! =D" + socket.getInetAddress() + socket.getPort()); 
      InputStream is = socket.getInputStream(); 
      BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
      String cadena = br.readLine(); 
      System.out.println("LA CADENA ES: " +cadena); 
      EditText et = (EditText)findViewById(R.id.fecha); 
      et.setText(cadena); 
      br.close(); 

     } catch (UnknownHostException e) { 

      e.printStackTrace(); 

     } catch (IOException e) { 

      e.printStackTrace(); 

     } catch (Exception e) { 

      e.printStackTrace(); 

     } 

    } 



    class ClientThread implements Runnable { 
     @Override 
     public void run() { 

      try { 
       System.out.println("Se ha conectado sin problemas"); 
       InetAddress serverAddr = InetAddress.getByName(SERVER_IP); 
       socket = new Socket(serverAddr, SERVERPORT); 

      } catch (UnknownHostException e1) { 

       e1.printStackTrace(); 

      } catch (IOException e1) { 

       e1.printStackTrace(); 

      } 

     } 

    } 

} 
+0

为什么你在**之前登录成功**你甚至进行连接尝试?事实上,你似乎根本没有调用你的ejecutar()方法。当你调用它时,你需要使用runOnUiThread来进行UI更新操作。 –

+0

无论您正在运行的代码是在使用实例化类时创建的空的非连接套接字。目前还不清楚为什么你要使用线程来创建一个新的套接字。 –

+0

@BrianRoach - 可能是因为你不被允许在UI线程上进行网络操作(即使允许,也永远不可取)。 –

回答

0

这对我的作品通过USB连接到我的Win7 PC(mTimeout为5000):

mSocket = new Socket(); 
mSocket.setSoTimeout(mTimeout); 
mSocket.connect(new InetSocketAddress(SERVER_IP, SERVERPORT), mTimeout); 

我在PC上使用这个命令得到IP:

InetAddress.getLocalHost().getHostAddress() 
相关问题