Para lo de los dll, si te refieres a llamar desde java a funciones que hay en la dll, es posible pero no sencillo. Busca cosas sobre JNI (Java Native Interface).
En cuanto a enviar un fichero por socket, en http://www.chuidiang.com/java/sockets/fichero_socket/fichero_socket.html tienes un ejemplo, aunque no estoy demasiado satisfecho con el código que he puesto ahí.