multithread server with futureTask

i want to write a multithread server that prints the message received from a client in reverse order i have problems with getting the message from a client and passing that to futureTask

this is my futureTaskCallback

class FutureTaskCallback<V> extends FutureTask<V> {

public FutureTaskCallback(Callable<V> callable) {

super(callable);

}

public void done() {

String result = "Wynik: ";

if (isCancelled()) result += "Cancelled.";

else try {

result += get();

} catch(Exception exc) {

result += exc.toString();

}

JOptionPane.showMessageDialog(null, result);

}

}

and mycallable

public class MyCallable implements Callable

{

String toReverse;

public MyCallable(String s){toReverse=s;}

public String call () throws java.io.IOException, InterruptedException {

StringBuffer out = new StringBuffer();

////ClientWorker w;

/// w = new ClientWorker(server.accept(), textField);

/// Thread t = new Thread(w);

//// t.start();

//////toReverse=textField.getText();

///System.out.println(toReverse);

if (toReverse == null || toReverse.trim().equals(""))

throw new IllegalArgumentException("Set string to reverse");

///if (t.isInterrupted()) return null;

char[] org = toReverse.toCharArray();

//// if (t.isInterrupted()) return null;

for (int i = org.length-1; i>=0; i--) {

Thread.sleep(500);

out.append(org);

////if (t.isInterrupted()) return null;

///textField.setText(out.toString());

////if (t.isInterrupted()) return null;

}

///////Thread t = Thread.currentThread();

return out.toString();

}

i want to pass the message received from a client to mycallable then to server so it can print the output

how to do that ?

thank you

regards

[1956 byte] By [oll3ia] at [2007-11-27 2:45:18]
# 1

Here's a primitive example:

import java.net.*;

import java.util.concurrent.*;

import java.io.*;

import javax.swing.*;

public class RevServer{

ServerSocket ss;

boolean go;

public RevServer(int port){

try{

ss = new ServerSocket(port);

}

catch (Exception e){

e.printStackTrace();

}

go = true;

}

public void runServer(){

try{

while (go){

Socket s = ss.accept();

System.out.println("...client connected");

service(s);

}

ss.close();

}

catch (Exception e){

e.printStackTrace();

}

}

void service(Socket s){

Thread t = new Thread(new ClientHandler(s));

t.start();

}

public static void main(String[] args){

RevServer rs = new RevServer(9999);

rs.runServer();

}

}

class ClientHandler implements Runnable{

Socket sct;

public ClientHandler(Socket s){

sct = s;

}

public void run(){

try{

BufferedReader br

= new BufferedReader(new InputStreamReader(sct.getInputStream()));

String msg = br.readLine();

FutureTaskCallback<String> ftc

= new FutureTaskCallback<String>(new MyCallable(msg));

new Thread(ftc).start();

PrintWriter pw = new PrintWriter(sct.getOutputStream(), true);

pw.println(ftc.get());

sct.close();

}

catch (Exception e){

e.printStackTrace();

}

}

}

class FutureTaskCallback<V> extends FutureTask<V> {

public FutureTaskCallback(Callable<V> callable) {

super(callable);

}

public void done() {

String result = "Wynik: ";

if (isCancelled()){

result += "Cancelled.";

}

else{

try {

result += get();

}

catch(Exception exc) {

result += exc.toString();

}

}

JOptionPane.showMessageDialog(null, result);

}

}

class MyCallable implements Callable<String>{

String toReverse;

public MyCallable(String s){

toReverse = s;

}

public String call() throws java.io.IOException, InterruptedException {

StringBuffer out = new StringBuffer();

if (toReverse == null || toReverse.trim().equals("")){

throw new IllegalArgumentException("Set string to reverse");

}

char[] org = toReverse.toCharArray();

for (int i = org.length - 1; i >= 0; i--) {

Thread.sleep(500);

out.append(org[i]);

}

return out.toString();

}

}

-

import java.net.*;

import java.io.*;

public class RevClient{

public static void main(String[] args) throws Exception{

String str, rstr;

str = "All you need is love";

if (args.length > 0){

str = args[0];

}

Socket sc = new Socket("127.0.0.1", 9999);

PrintWriter pw = new PrintWriter(sc.getOutputStream(), true);

BufferedReader br

= new BufferedReader(new InputStreamReader(sc.getInputStream()));

pw.println(str);

System.out.println("...wait a moment");

rstr = br.readLine();

System.out.println(rstr);

sc.close();

}

}

hiwaa at 2007-7-12 3:12:43 > top of Java-index,Core,Core APIs...
# 2
one thank you is not enough thank you thank you thank you
oll3ia at 2007-7-12 3:12:44 > top of Java-index,Core,Core APIs...