安卓:扫描TCP套接字服务器的IP(端口IST知) [英] Android: Scanning for TCP socket server IP (Port ist known)
本文介绍了安卓:扫描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屋!
查看全文