套接字android客户端PC服务器

时间:2014-05-28 16:02:24

标签: java android sockets client

我有问题将我的Android客户端连接到我的PC服务器 这里有代码

- > PC SERVER:

public class Server {

public static void main(String[] args) throws IOException, SQLException, ClassNotFoundException
{

   ServerSocket server = new ServerSocket(4444);

   System.out.println("Waiting for clients to connect...");

   while (true)
   {
      Socket s = server.accept();
      InetAddress clientAddress = s.getInetAddress();
      System.out.println("Incoming connection from: " + clientAddress.getHostName() + "[" + clientAddress.getHostAddress() + "]");

      s.close();
   }
}

}

---> ANDROID客户:

public class Main extends Activity {

Button b;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    b = (Button)findViewById(R.id.connect);
    b.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View arg0) {

            try {
                 Socket client = new Socket("10.0.2.2", 4444); //connect to server

                 client.close();   //closing the connection

                } catch (UnknownHostException e) {
                 e.printStackTrace();
                } catch (IOException e) {
                 e.printStackTrace();
            }

        }

    });

}

在我的Android设备上,我点击我的服务器程序(PC)中的按钮没有查看设备连接...为什么?我试图插入

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

进入我的AndroidManifest但是当我点击按钮程序崩溃时 Android设备和PC连接到同一网络(路由器DSL)。

请帮帮我

3 个答案:

答案 0 :(得分:0)

您使用的地址为10.0.2.2non routable为私有。

您应该使用设备可以解析的地址。在DNS中发布的DNS名称可以从您的手机访问(因此是公共的)或可路由的IP。您的服务器应该可以从公共网络访问,除非您特别注意,否则您的PC不太可能出现这种情况 - 我不确定您的意思是什么:

  

Android设备和PC连接到同一网络(路由器DSL)

请查看手机端抛出的异常并使用生成的堆栈跟踪编辑您的帖子。这将有助于深入研究这一点。

答案 1 :(得分:0)

10.0.2.2是在模拟器中运行的应用程序用于连接PC上运行的服务器的地址。模拟器在同一台PC上。如果您使用真正的设备,则必须使用与设备位于同一WLAN中的PC的(W)LAN地址。经常像192.168.0.12。找出ipconfig。

答案 2 :(得分:0)

您的套接字声明应如下所示:

Socket client = new Socket(10.0.2.2, 4444); //Quotes removed