我正在嘗試製作一個應用程序,掃描特定打開端口(5050)的範圍內的所有IP,並且如果它打開,請在LOG上寫入一些消息。Android套接字在連接後卡住
繼承人的代碼:
public void run(){
for(int i=0;i<256;i++)
{
Log.d("NetworkScanner","attemping to contact 192.168.1."+i);
try {
Socket socket=new Socket(searchIP+i,5050);
possibleClients.add(searchIP);
socket.close();
Log.d("NetworkScanner"," 192.168.1."+i+" YEAAAHHH");
} catch (UnknownHostException e) {
Log.d("NetworkScanner"," 192.168.1."+i+" unavailable");
} catch (IOException e) {
e.printStackTrace();
}
}
}
編輯:這裏有一個新的問題:即使主機在網上發現沒有打開的端口掃描程序(用於環路)粘貼很長一段時間移動到下一個前。同時掃描每臺主機也需要相當長的時間!
唷最終的解決方案是使用默認的構造函數Socket對象然後創建的InetAddr對象爲主機,然後以毫秒爲單位使用socket API的連接(的InetAddr,超時)函數超時(約300毫秒),掃描在僅300毫秒或更小的每個IP(小於200毫秒可能給出錯誤)和多線程中並行make掃描它快5秒來掃描範圍內的所有IP地址..
Phew最終的解決方案是使用默認構造函數創建一個Socket對象,然後爲主機創建InetAddr對象,然後使用連接(InetAddr,超時)函數以毫秒(約300毫秒)超時掃描每個IP在短短300毫秒或更小(小於200毫秒可能會給出錯誤)和多線程並行掃描化妝它一樣快,5秒鐘掃描範圍內的所有IP地址.. 感謝大家的答覆 – Allahjane