繁体   English   中英

使用Java将Android手机连接到服务器套接字

[英]Connect android phone to server socket using Java

我正在Eclipse中编写Java代码,以创建一个Android浏览器,当按下浏览器的“ Go”按钮时,该浏览器通过套接字与服务器通信。 我看过几个示例,但仍然不知道我的代码有什么问题。 我具有正确的IP地址,并且在代码的服务器端和客户端使用相同的端口号。 这是客户端代码减去import语句:

public class MainActivity3 extends Activity {

    EditText URLText;

    Button GoButton;
    WebView Browser;
    int SERVERPORT = 33333;
    String servernum = "10.215.23.109";
    private boolean connected = true;

    private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_activity3);

        URLText = (EditText) findViewById(R.id.URL);
        GoButton = (Button) findViewById(R.id.Go);
        Browser = (WebView) findViewById(R.id.WebEngine);
        Browser.loadUrl("http://www.google.co.in/");

        GoButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

                Browser.setWebViewClient(new MyWebViewClient());

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

                Browser.loadUrl("http://" + URLText.getText().toString());

            }
        });
    }

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

            try {

                Log.d("ClientActivity", "C: Connecting...");
                Socket socket = new Socket(servernum, SERVERPORT);
            } catch (UnknownHostException e) {
                System.err.println(e);
            } catch (IOException e) {
                System.err.println(e);
            }
        }

        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.activity_main_activity3, menu);
            return true;
        }
    }
}

这是服务器代码:

public static void main(String[] args) throws IOException {
    int port = 33334;
    ServerSocket serverSocket = new ServerSocket(port);
    System.out.println("Server socket created at port # "+ port );
    Socket socket = serverSocket.accept();
    System.out.println("Socket accepted");
    System.out.println("Output created");

    socket.close();
    serverSocket.close();  
}

这基本上是一个测试代码,可确保电话将连接到服务器。 当我在Linux终端上运行它时,它仅输出“在端口#33334上创建的服务器套接字”,并等待电话与永远不会发生的端口连接,即使我反复按浏览器,这也使我相信我的代码的客户端有问题。

谁能帮我解决这个问题?

这看起来与这篇文章非常相似。

除了创建WebView之外,还可以使用DefaultHttpClient直接与服务器通信:

try{
    DefaultHttpClient client = new DefaultHttpClient();
    HttpGet request = new HttpGet("http://10.215.23.109:33333");
    HttpResponse response = client.execute(request);
}catch(Exception e){
    // Handle the exception
    e.printStackTrace();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM