Socket

Estou com muita dificuldade socket Java. Por mais que leio a documentação e pego exemplos da net, a coisa não anda.

Galera eu preciso da ajuda de vocês, preciso criar um socket para enviar uma String (Usuario e Senha) para logar no sistema, após a respota do servidor que o usuário está logado, gostaria de enviar um arquivo do cliente para servidor e receber um arquivo servidor para o cliente.

O que eu não estou conseguindo fazer é integrar as duas partes String e Arquivo no mesmo socket, pois, socket enviara uma string, depois enviara um arquivo, depois uma mensagem e por final recebera um arquivo.

Alguém tem alguma dica para me dar.

Desde já obrigado.

Pessoal, alguem pode me ajudar pq apresenta as mensagens abaixo, sendo que o socket não foi fechado ainda.

Cliente:

java.net.SocketException: Socket Closed java.net.SocketException: Socket Closed at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) at _ESocketServer.Cliente.run(Cliente.java:126) at java.lang.Thread.run(Unknown Source)

Cliente - Erro da Linha 126:
String respServer = in.readLine();

Server:

java.net.SocketException: Socket is closed at java.net.Socket.setSoTimeout(Unknown Source) at _ESocketServer.Atendente.run(Atendente.java:119) at java.lang.Thread.run(Unknown Source)

Server - Erro da linha 119
socket.setSoTimeout(2500);

Obrigado.