Buenas:
El tema de los sockets bloqueados o sockets que se bloquean bajo alguna circunstancia es una cosa curiosa
Se trata de sockets que bajo una condicion se bloquean (osease el hilo en el que están se suspende hasta que se pase esa condición), vale, y cuales son esas condiciones???? Pues las hay de varios tipos: en C: existen los sockets de escritura bloqueante, mientras el otro extremo del socket, escribe, i porceso se encuentra bloqueado para no encontrar nada anómalo (esto se encuentra en los flags de definición del socket)... creo que tb hay algún otro tipo (asi de memoria no recuerdo
). En VB.NET existen sockets sincronos y asincronos: sockets que se bloquean hasta que han recibido toda la información (síncronos), y sockets que no se bloquean y tenemos q ver si nuestro buffer se ha llenado
(asincronos).
En java los sockets por naturaleza son NO BLOQUEANTES pero con una caracteristica curiosa, que como se utilizan con otras cosillas si que se vuelven bloqueantes
--ahora me explico--
try{
Socket s = new Socket("mihost.es",25); //Creamos el socket :D
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); //Creamos un BufferedReader para leer OJO!!!! FIJAOS LO Q USAMOS
DataOutputStream dos = new DataOutputStream(s.getOutputStream()); //Un DataOutputStream para leer :P
dos.writeBytes("Hola\r\n"); //Escribimos al dataoutput sin mais :P
System.out.println(br.readLine()); //Y leemos con el buffered reader
dos.writeBytes("QUIT\r\n");
br.close(); //cerramos y tal
dos.close();
s.close();
}catch(IOException ioe){
System.err.println("Error: " + ioe);
}
Vale, ahora vemos q leemos con un Buffered reader, pues ahora resulta que el Buffered reader si que es bloqueante se trata de un elemnto sincronizado... por lo tanto lo que antes teniamos como un socket no bloqueante al utilizar un BufferedReader, pos si que es bloqueante... por ejemplo el codigo q he puesto, el programa estará prarado en br.readline() hasta que el otro extremo del socket escriba un salto de linea.
Espero q esto te sirva de algo
El IDE que utilices realmente no tiene nada q ver porque son especificaciones del lenguaje
Salu2o3