import java.io.*; import java.net.*; public class SampleServer extends Thread { Socket s; int num; String r; public static void main(String args[]) { try { int i=0; //счетчик подключений //привинтить сокет на localhost. порт 3128 ServerSocket server = new ServerSocket(3128, 0, InetAddress.getByName("localhost")); System.out.println("server is started"); //слушаем порт while(true) { //ждем нового подключения, после чего запускаем //обработку клиента в новый вычислительный поток //и увеличиваем счетчик на еденицу new SampleServer(i,server.accept()); i++; } } catch (Exception e) { System.out.println("init error: "+e); } } public SampleServer(int num, Socket s) { //копируем данные this.num=num; this.s=s; //запускаем новый вычислительный поток setDaemon(true); setPriority(NORM_PRIORITY); start(); } public void run() { try { //из сокета клиента берем поток входящих данных InputStream is = s.getInputStream(); //и оттудаже - поток данных от сервера к клиенту OutputStream os = s.getOutputStream(); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String line=null; //буфер данных в 64 килобайта //byte buf[] = new byte[64*1024]; //читаем 64кб от клиента, результат кол-во //реальных принятых данных //int r = is.read(buf); while ((line=in.readLine())!=null){ //String r = in.readLine(); } //создаем строку содержащую полученную от клиента информацию String data = line; //добовляем данные об адресе сокета data=""+num+": "+"\n"+r; //выводим данные os.write(r.getBytes()); //завершаем соединение s.close(); } catch (Exception e) { System.out.println("init error"+e); } } }