安卓:扫描TCP套接字服务器的IP(端口IST知) [英] Android: Scanning for TCP socket server IP (Port ist known)

查看:168
本文介绍了安卓:扫描TCP套接字服务器的IP(端口IST知)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在扫描我的子网插槽服务器与港口7打开和使用并行线程。我总是看到一个镜头连接,并在服务器端断开,所以基本code应该没问题。

但我怎么收集发现(成功连接)服务器的IP在一个阵列?

任何帮助将是很大的AP preciated!

 公共类MainActivity延伸活动{
按钮buttonConnect;

Socket套接字= NULL;
INT口= 7;
INT超时= 200;

最后ExecutorService的ES = Executors.newFixedThreadPool(20);

@覆盖
保护无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);

    buttonConnect =(按钮)findViewById(R.id.button1);

    buttonConnect.setOnClickListener(buttonConnectOnClickListener);

}

Button.OnClickListener buttonConnectOnClickListener =新Button.OnClickListener(){

    @覆盖
    公共无效的onClick(视图v){

        字符串iIPv4 =192.168.0.1;
        iIPv4 = iIPv4.substring(0,iIPv4.lastIndexOf()。);
        iIPv4 + =;

        的for(int i = 1; I< 255;我++){
            findSocket(ES,iIPv4 + I,端口,超时);
        }
    }
};

公共静态未来<布尔> findSocket(最终的ExecutorService上课,
        最后弦乐IP,最终诠释口,最终诠释超时){
    返回es.submit(新的可赎回<布尔>(){
        @覆盖
        公共布尔调用(){
            尝试 {
                Socket套接字=新的Socket();
                socket.connect(新InetSocketAddress(IP,端口),超时);
                socket.close();
                返回true;
            }赶上(例外前){
                返回false;
            }
        }
    });
}
 

}

解决方案

 的ArrayList<字符串> ArrayList的=新的ArrayList<字符串>();
 

然后在尝试 findSocket 块之前返回true;

  arayList.add(IP);
 

I'm scanning my subnet for socket servers with port 7 open and using parallel threads. I always see a shot "connect" and "disconnect" on the server side, so the basic code should be OK.

But how do i collect the found (successfully connected) server IPs in an array?

Any help would be greatly appreciated!

public class MainActivity extends Activity{
Button buttonConnect;

Socket socket = null;
int port = 7;
int timeout = 200;

final ExecutorService es = Executors.newFixedThreadPool(20);

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

    buttonConnect = (Button) findViewById(R.id.button1);

    buttonConnect.setOnClickListener(buttonConnectOnClickListener);

}

Button.OnClickListener buttonConnectOnClickListener = new Button.OnClickListener() {

    @Override
    public void onClick(View v) {

        String iIPv4 = "192.168.0.1";
        iIPv4 = iIPv4.substring(0, iIPv4.lastIndexOf("."));
        iIPv4 += ".";

        for (int i = 1; i < 255; i++) {
            findSocket(es, iIPv4 + i, port, timeout);
        }
    }
};

public static Future<Boolean> findSocket(final ExecutorService es,
        final String ip, final int port, final int timeout) {
    return es.submit(new Callable<Boolean>() {
        @Override
        public Boolean call() {
            try {
                Socket socket = new Socket();
                socket.connect(new InetSocketAddress(ip, port), timeout);
                socket.close();
                return true;
            } catch (Exception ex) {
                return false;
            }
        }
    });
}

}

解决方案

ArrayList<String> arrayList = new ArrayList<String>();

then in the try block of findSocket before return true;

arayList.add(ip);

这篇关于安卓:扫描TCP套接字服务器的IP(端口IST知)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆