Ver Mensaje Individual
  #5 (permalink)  
Antiguo 30/08/2005, 09:51
kakarot
 
Fecha de Ingreso: diciembre-2003
Mensajes: 288
Antigüedad: 20 años, 4 meses
Puntos: 0
Lo prometido es deuda :)

Asi que aqui va el codigo:

Este es del programa principal:

import java.io.*;
import java.lang.*;
import java.net.*;

public class Escaneo{


public static void main(String[] arg)

{
int i;
int n;
for (i = 0; i < arg.length; i++)
{
}
if (i!= 4){

System.out.println(" El programa debe recibir 4 argumentos");
System.out.println(" 1er Argumento-> Equipo destino, mediante IP xxx.xxx.xxx.xxx o www.xxx.x");
System.out.println(" 2n Argumento->Puerto inicial");
System.out.println(" 3er Argumento-> Puerto final");
System.out.println(" 4to Argumento-> Modo escaneo debe de ser un 0");

System.out.println (" EJEMPLO: Escaneo www.google.es 2 56 0");
System.exit(0);
} //if//

int puertoini;
int puertofin;
int modo;
puertoini=Integer.parseInt(arg[1]);
puertofin=Integer.parseInt(arg[2]);
modo=Integer.parseInt(arg[3]);
error_puertos(puertoini, puertofin);
error_puertos2(puertoini, puertofin);
error_modo(modo);

System.out.println("Intentando conectar al servidor: "+arg[0].toString());
while (puertoini<=puertofin){
Cliente cliente=new Cliente(arg[0],puertoini);
puertoini++;
}
}//main//

public static void error_puertos(int pi, int pf)
{
if (pi < 1 || pi>65535) {
System.out.println("El puerto inicial/final debe estar entre los valores 1 y 65535");
System.exit(0);
}//if
if (pf < 1 || pf>65535){
System.out.println("El puerto inicial/final debe estar entre los valores 1 y 65535");
System.exit(0);
}//if
}//error_puertos

public static void error_puertos2(int pi, int pf)
{

if (pi > pf) {
System.out.println("El puerto inicial debe ser menor que el puerto final");
System.exit(0);
}
}//error_puertos2

public static void error_modo(int m){
if (m!=0 ){
System.out.println(" Modo escaneo debe de ser un 0");
System.exit(0);
}//if
}//error_modo

}//class//

Ahora el de la clase cliente:

import java.io.*;
import java.net.*;
import java.sql.*;

class Cliente {
Socket Cliente=null;
DataInputStream recibo=null;
DataOutputStream envio=null;

public Cliente(String host,int puerto){

try{
Cliente=new Socket(host,puerto);
envio=new DataOutputStream(Cliente.getOutputStream());
recibo=new DataInputStream(Cliente.getInputStream());
}//try
catch (UnknownHostException e){

System.out.println("No se ha podido conectar con el servidor: " +host.toString());
System.exit(0);
}//cath

catch (IOException e1){

System.out.println("Puerto: " +puerto+ " Cerrado");
}//catch

if(Cliente !=null && envio !=null && recibo !=null){
try{
if(puerto<=1023){
consulta(puerto);
}//if
else {servidor_http(host,puerto);}

envio.close();
recibo.close();
Cliente.close();
}//try
catch (UnknownHostException e){

System.out.println("No se ha podido conectar con el servidor: " +host.toString());
}//catch

catch (IOException e1){

System.out.println("Error en entrada/salida datos");
}//catch
}//if
}//cliente

public void consulta(int puerto){
try{
File fichero=new File("Puertos.mdb");
String ruta=null;
if(fichero.exists()){
ruta=fichero.getAbsolutePath();
}//if
// la información para conectar la BD: http://www.gamarod.com.ar/articulos/...y_access.asp//
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //llamada al Driver JDBC-ODBC para cargarlo
Connection conexion=DriverManager.getConnection("jdbc:odbc:Dr iver={Microsoft Access Driver (*.mdb)};DBQ=" + ruta, "", "");//hacemos la conexion a la BD pasandole el patch
Statement stat=conexion.createStatement();
ResultSet rs=stat.executeQuery("SELECT * FROM Ports WHERE Port="+puerto+"");
while (rs.next())
{
System.out.println("Puerto: "+rs.getString(1)+ " Servicio: "+rs.getString(2));
}
rs.close();
stat.close();
conexion.close();
}//try
catch(Exception e){ System.out.println("No se ha podido cargar el Driver JDBC-ODBC"); }

}//consulta
public void servidor_http(String host, int puerto){

String servicio=null;
try{
URL url = new URL("http://" + host + ":" + puerto + "/");//constructor url//
HttpURLConnection conexion=(HttpURLConnection)url.openConnection(); //abrimos una conexion//
conexion.connect();
if (conexion.getResponseCode() !=-1){
System.out.println("Puerto: "+puerto+ " Servicio: http");
}//if
conexion.disconnect();//la cerramos//
}//try

catch (MalformedURLException e) {
System.out.println("MalformedURLException: " + e);
}//catch
catch (IOException e1){
System.out.println("Error");
}
}// servidor_http

}//class


Lo q habia pensado en el principal era una vez conectado poner una opcion de establecer una conexion asi como en visual basic con el winsock, pero no veo como se aceptan sugerencias :)