Rambler's Top100

А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Э Ю Я

Все примеры | Примеры по пакетам

 //Многопоточный сервер с защитой ресурса от одновременного доступа; 
 //Когда один клиент захватывает ресурс, значение resourceBusy=false; 
 //После освобождения ресурса resourceBusy=true; 
package MultiThreadServer;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;


public class MultiThreadServer implements Runnable {
  Socket socket;
  static Boolean resourceBusy=false;
  static String filename;
  static String fileString;

  MultiThreadServer(Socket socket) {
    this.socket = socket;
  }
public static String readPage(String fileName)
     throws Exception
    {
            String strPage="";
            StringBuilder sb=new StringBuilder();
            String str="";
    InputStreamReader inputstream = null;
    try {
             inputstream = new InputStreamReader(new FileInputStream(fileName)
                        , "utf-8");
                BufferedReader in = new BufferedReader(inputstream);

                 while (((str = in.readLine()) != null)) {
                    sb.append(""+str+"");
                 }

            } catch (IOException ex) {}
            strPage=sb.toString();
            return strPage;
    }
public static String writeToFile(String filename, String strPage ){
    PrintWriter writer = null;
try {


    writer = new PrintWriter(new OutputStreamWriter(
           new FileOutputStream(filename), "utf-8"));
           writer.write(strPage);
           writer.close();
        } catch (Exception ex) {
        }
return strPage;
}
static void getResource(String filename) throws Exception{
  resourceBusy=true;
  fileString=  readPage(filename);
  resourceBusy=false;
}
static void setResource(String filename,String resource){
    resourceBusy=true;
    writeToFile(filename, resource );
    resourceBusy=false;
}

public void run() {
    try {
      PrintStream pstream = new PrintStream(socket.getOutputStream());
      InputStream clientIn = socket.getInputStream();
      BufferedReader br = new BufferedReader(new
      InputStreamReader(clientIn));
      String msgFromClient = br.readLine();
      System.out.println("msgFromClient "+msgFromClient);
      if((resourceBusy==false)){
          if(msgFromClient.startsWith("read")){
             try {
                    getResource(filename);
                    pstream.println(fileString);
                } catch (Exception ex) {}
          }
          if(msgFromClient.startsWith("write")){
             try {
                 msgFromClient=msgFromClient.replace("write ", "");
                    setResource(filename,msgFromClient);
                    pstream.println("Файл сохранен");
                } catch (Exception ex) {}
          }
      }
      else{
      pstream.println("Порт "+socket.getPort()+" " + " занят");
      }
      pstream.close();
      socket.close();
    } catch (IOException e) {
      System.out.println(e);
    }
  }
public static void main(String args[]) throws Exception {
    filename="/home/evgeny/NetBeansProjects/JavaSamples2/src/server2/csv.txt";
    ServerSocket ssock = new ServerSocket(1234);
    System.out.println("Готов к соединению");
    while (true) {
      Socket sock = ssock.accept();
      System.out.println("Соединен");
      new Thread(new MultiThreadServer(sock)).start();
    }
  }
}

Клиент считывает текстовый csv-файл с сервера и выводит его на фрейм;
Rambler's Top100


Ассоциативные ссылки