简体   繁体   English

Android套接字错误

[英]Android Socket Error

I'm making server in linux. 我正在用Linux做服务器。 and client is android. 和客户端是Android。 android client and linux server is under the same local network. android客户端和linux服务器在同一局域网中。 but linux sever can't catch client's connection. 但是linux服务器无法捕获客户端的连接。 what is problem with my code? 我的代码有什么问题?

(Client) (客户)

package com.example.hello;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import java.net.InetAddress;
import java.net.InetAddress;
import java.net.InetAddress;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.LinkedList;
public class MainActivity extends ActionBarActivity {
    private Button Btn_Connect;

     private static final int ERROR = -1;
     private static final int DATA = 2;
     private static final String ERROR_KEY = "_error";
     private static final String DATA_KEY = "_data";
     private static int port = 8888;
     LinkedList<SocketClient> threadList;



    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        threadList = new LinkedList<MainActivity.SocketClient>();
        Btn_Connect = (Button) findViewById(R.id.Btn_cennect);



        Btn_Connect.setOnClickListener(new OnClickListener() {
             Socket socket = null;  
            @Override
            public void onClick(View v) {
                //Toast.makeText(getApplicationContext(), "asasdfsdf", 100).show();
                Log.d("msg", "park0");

                SocketClient client = new SocketClient("192.168.171.129");
                threadList.add(client);
                client.start();

                Intent intent = new Intent(MainActivity.this, Connected.class);
                startActivity(intent);



            }
        });
    }


    @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;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    class SocketClient extends Thread{
        boolean threadAlive;
        String ip;
        public SocketClient(String ip){
               threadAlive = true;
               this.ip = ip;
        }

        @Override
        public void run() {
               Socket socket = null;
               InputStream inputStream = null;
               BufferedInputStream bufStream = null;
               try {
                      socket = new Socket(ip,port);
                      inputStream = socket.getInputStream();
                  //    bufStream = new BufferedInputStream(inputStream);
                      int len = 0;
                      byte[] readBytes = new byte[1000];
                      while( (len = bufStream.read(readBytes)) != -1 ){
                      //      Message msg = Message.obtain();
                        //    msg.what = DATA;
                          //  Bundle bundle = new Bundle();
              //              bundle.putString(DATA_KEY, new String(readBytes, 0, len));
                //            msg.setData(bundle);
                          //  uiHandler.sendMessage(msg);
                      }

               } catch (Exception e) {
              //        Message msg = Message.obtain();
                //      msg.what = ERROR;
              //        Bundle bundle = new Bundle();
                //      bundle.putString(ERROR_KEY, e.toString());
                  //    msg.setData(bundle);
                    //  uiHandler.sendMessage(msg);
               } finally{
                      try {
                            bufStream.close();
                            inputStream.close();
                            socket.close();
                      } catch (IOException e) {
//                            Message msg = Message.obtain();
//                            msg.what = ERROR;
//                            Bundle bundle = new Bundle();
//                            bundle.putString(ERROR_KEY, e.toString());
//                            msg.setData(bundle);
//                            uiHandler.sendMessage(msg);     
                      }
               }
        }
  }



}
public class ChatApplication extends Application {

    private Socket mSocket;
    {
        try {
            mSocket = IO.socket(Constants.CHAT_SERVER_URL);
        } catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
    }

    public Socket getSocket() {
        return mSocket;
    }
}

this will return socket. 这将返回套接字。

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

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