Skip to content

Instantly share code, notes, and snippets.

@MisterTimur
Last active August 27, 2015 23:07
Show Gist options
  • Save MisterTimur/ed9eb5439dfac433035a to your computer and use it in GitHub Desktop.
Save MisterTimur/ed9eb5439dfac433035a to your computer and use it in GitHub Desktop.
Server.Java
package server;/*Абдулов Тимур Рифович 2015 год Email hostingurifa@gmail.com .
;INFO
;Site https://sites.google.com/site/timpascallib/
;Youtube https://www.youtube.com/watch?v=8UsQWQUJYVk
;Google+ https://plus.google.com/u/0/+%D0%A2%D0%B8%D0%BC%D1%83%D1%80%D0%90%D0%B1%D0%B4%D1%83%D0%BB%D0%BE%D0%B2/posts
;GIST https://gist.github.com/MisterTimur/ed9eb5439dfac433035a
;------------------------------------------------------------------------------*/
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
static public int MaxLenBuffer=16000;// Размер буффера
static public int MaxKolZapros=100;// Количество запросов в списке
static public class TZapros {
Boolean Rab = false;// Состояние
public Socket Soc;//Чёкит запроса
byte Zap[] = new byte[MaxLenBuffer];// Буфер запроса
byte Otv[] = new byte[MaxLenBuffer];// Буфер ответа
public void Run(){
try{
Rab = true;// Люработка начата
int ZapSi; // Размер запроса
int OtvSi; // Размер ответа
// Принимаем данные
ZapSi = Soc.getInputStream().read(Zap,0,MaxLenBuffer);
// Формируем ответ
OtvSi = ZapSi; //копируем размер запроса
Otv = Zap; // копируем запрос
// ОТправляем данные
Soc.getOutputStream().write(Otv,0,OtvSi);
Soc.close();// закрываем соеденение
Rab = false;// Готовы принимать новый запрос
} catch (Exception ex)// Ошибки
{System.out.println("Ошибка 3");}
}
}
static public TZapros[] Zapross; // Список запросов
static public int NomRunZapros; // Номер запроса отправляемого на обработку
static public void StartZApros(Socket Soc){
NomRunZapros = -1;// Устанавливаем номер свободного потока
//Этот метод будет выполняться в побочном потоке
Thread myThready = new Thread(new Runnable(){public void run()
{Zapross[NomRunZapros].Run();}});
// Ищим свободый поток
for (int f=0;f<MaxKolZapros;f++)
if (Zapross[f].Rab==false) // если поток свободен
{//Отправляем на обработку
Zapross[f].Rab=true;// Выставляем флаг занято
Zapross[f].Soc=Soc;// Передаем чёкит
NomRunZapros=f;// указываем куда направляем поток
myThready.start();// Запускаем поток
break;
}
} // запускат запрос на выполнение
public static void main(String[] args) throws IOException{
Zapross = new TZapros[MaxKolZapros];// Создаем масив запросов
for (int f=0;f<MaxKolZapros;f++)
Zapross[f]= new TZapros();// Создаем обьекты запроса
// Запускаем сервер
ServerSocket listener = new ServerSocket(8080);
// Цикл приема запросов
while(true)
try
{
Socket Soc = listener.accept(); // ПРинимаем запрос
StartZApros(Soc);//ОТправляем запрос на обработку
} catch (Exception ex)
{System.out.println("Ошибка 1");}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment