hola gracias por tu ayuda he hecho este servidor multithread pero tengo un problema cuando hay un cliente que esta conectado todo funciona bien pero cuando se conecta otro cliente los ficheros no llegen aqui esta el codigo gracias.
MultiThreadedServer
public class MultiThreadedServer implements Runnable{
protected int serverPort = 1234;
protected ServerSocket serverSocket = null;
protected boolean isStopped = false;
protected Thread runningThread= null;
public MultiThreadedServer(int port){
this.serverPort = port;
}
public void run(){
synchronized(this){
this.runningThread = Thread.currentThread();
}
openServerSocket();
while(! isStopped()){
Socket clientSocket = null;
try {
clientSocket = this.serverSocket.accept();
} catch (IOException e) {
if(isStopped()) {
System.out.println("Server Stopped.") ;
return;
}
throw new RuntimeException(
"Error accepting client connection", e);
}
new Thread(
new WorkerRunnable(
clientSocket, "Multithreaded Server", null, null, null)
).start();
}
System.out.println("Server Stopped.") ;
}
private synchronized boolean isStopped() {
return this.isStopped;
}
public synchronized void stop(){
this.isStopped = true;
try {
this.serverSocket.close();
} catch (IOException e) {
throw new RuntimeException("Error closing server", e);
}
}
private void openServerSocket() {
try {
this.serverSocket = new ServerSocket(this.serverPort);
} catch (IOException e) {
throw new RuntimeException("Cannot open port 8080", e);
}
}
public static void main(String...args) throws IOException
{
MultiThreadedServer server = new MultiThreadedServer(1234);
new Thread(server).start();
try {
Thread.sleep(20 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Stopping Server");
// server.stop();
}
}
WorkerRunnable
public class WorkerRunnable implements Runnable{
protected Socket clientSocket = null;
protected String serverText = null;
public WorkerRunnable(Socket clientSocket, String serverText, String file , String file1, String file2 ) {
this.clientSocket = clientSocket;
this.serverText = serverText;
}
public void run() {
try {
InputStream in =clientSocket.getInputStream();
DataInputStream dis = new DataInputStream(clientSocket.getInputStream());
String file = dis.readUTF();
String file1 = dis.readUTF();
String file2 = dis.readUTF();
int i=dis.readInt();
if(i==1)
{
File directorio = new File("c:\\direccion\\"+file1+"\\"+file2+"\\");
directorio.mkdirs();
}
if(file != null)
{
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\direccion\\"+file1+"\\"+file2+"\\"+ file));
byte buf[] = new byte[1024];
int len;
while((len = in.read(buf)) > 0)
{
bos.write(buf, 0, len);
}
in.close();
bos.close();
}
} catch (IOException e) {
//report exception somewhere.
e.printStackTrace();
}
}
}
Gracias todos.