Bom dia para todos! 
Eu programo em C ja a quatro anos, mas estou comecando a estudar Java.
Nao usei C++, por tanto nao tenho muito conhecimento com OO.
Estou aprendendo por enquanto pelo site oficial da Java, com o tutorial deles, que eu achei muito legal, que diferente de alguns livros, tem exemplos interessantes.
Bom, eu tentei escrever um codigo basico usandos sockets, ele funciona, mas eu estou postando ele aqui, para receber alguns comentarios, como: onde eu poderia melhorar ele, o que estou usando de errado, onde OO pode ajudar mais nesse codigo e por ai vai 
import java.util.*;
import java.net.*;
import java.io.*;
class httpQuery {
private Socket sock;
private String host;
private BufferedReader in;
private DataOutputStream out;
private int port;
public httpQuery( String host, int port ) {
this.host = host; this.port = port;
this.in = null; this.out = null;
this.sock = null;
}
public httpQuery( String host ) {
this( host, 80 );
}
private void Connect() {
try {
sock = new Socket( host, port );
in = new BufferedReader(
new InputStreamReader( sock.getInputStream() ));
out = new DataOutputStream( sock.getOutputStream() );
} catch( UnknownHostException uhe ) {
System.err.println( uhe.getMessage() );
} catch( IOException ioe ) {
System.err.println( ioe.getMessage() );
}
}
private void Disconnect() {
try {
sock.close();
in.close();
out.close();
} catch( IOException ioe ) {
System.err.println( ioe.getMessage() );
}
}
public String getHttpd() {
String response;
Connect();
try {
out.writeBytes( "HEAD / HTTP/1.0\r\n\r\n" );
while( (response = in.readLine()) != null )
if( response.indexOf( "Server:" ) != -1 ) {
Disconnect();
return response.substring( 8 );
}
} catch( IOException ioe ) {
System.err.println( ioe.getMessage() );
}
Disconnect();
return "Not Found";
}
}
public class srvQuery {
public static void main( String [] Args ) {
httpQuery test = new httpQuery( "linuxpackages.net", 80 );
System.out.println( test.getHttpd() );
}
}
E a segunda pergunta, qual livro que voces recomendam para aprender Java? Eu comprei o livro do Bruce Eckel (Learning Java), so que nao gostei dele, tem exemplos muito basicos, e ele puxa muito os assuntos, se metendo muito em syntax e tal.
Preciso de um livro com exemplos mais reais, e que aborde menos os assuntos basicos.
Obrigado! 
Obs. Otimo site, espero poder contribuir de algum jeito.
Obs2. Estou fascinado com Java, simplesmente facilita tudo.