Advertisement
Guest User

klienti i botovi udp

a guest
Nov 18th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.60 KB | None | 0 0
  1. public class Server extends Thread {
  2.  
  3.     private DatagramSocket socket;
  4.     private DatagramPacket packet;
  5.     private final int serverPort=8080;
  6.     private byte[] buffer;
  7.     private Map<InetAddress,Integer> mapKlienti;
  8.     private Map<InetAddress,Integer> mapBotovi; //moze da se koristi i edna mapa za site...
  9.     private ArrayList<String> poraki;
  10.  
  11.     public Server() {
  12.  
  13.         try {
  14.             socket =new DatagramSocket(serverPort);
  15.             buffer=new byte[1024];
  16.             mapKlienti =new HashMap<>();
  17.             mapBotovi=new HashMap<>();
  18.             poraki=new ArrayList<>();
  19.         } catch (SocketException e) {
  20.             e.printStackTrace();
  21.         }
  22.  
  23.     }
  24.  
  25.     public void resetBuffer(){
  26.         buffer=new byte[1024];
  27.     }
  28.  
  29.     public void sendPacket(String message, InetAddress ipClient, int clientPort){
  30.  
  31.         resetBuffer();
  32.         buffer=message.getBytes();
  33.         packet =new DatagramPacket(buffer,buffer.length,ipClient,clientPort);
  34.         try {
  35.             socket.send(packet);
  36.         } catch (IOException e) {
  37.             e.printStackTrace();
  38.         }
  39.  
  40.     }
  41.  
  42.     public String receivePacket(){
  43.         String retString=null;
  44.  
  45.         resetBuffer();
  46.         packet=new DatagramPacket(buffer,buffer.length);
  47.         try {
  48.             socket.receive(packet);
  49.             retString=new String(packet.getData()).trim();
  50.         } catch (IOException e) {
  51.             e.printStackTrace();
  52.         }
  53.  
  54.         return retString;
  55.     }
  56.  
  57.     @Override
  58.     public void run() {
  59.  
  60.         System.out.println("Serverot e pusten...");
  61.  
  62.         while (true){
  63.             //info of chat_klient ili chat_bot
  64.             resetBuffer();
  65.             boolean flag=true; ///klient ili bot   true-klient | false-bot
  66.             packet=new DatagramPacket(buffer,buffer.length);
  67.             try {
  68.                 socket.receive(packet);
  69.                 String clientOrBot=new String(packet.getData()).trim();
  70.                 if(clientOrBot.equals("*client"))
  71.                     flag=true;
  72.                 else if(clientOrBot.equals("*bot"))
  73.                     flag=false;
  74.             } catch (IOException e) {
  75.                 e.printStackTrace();
  76.             }
  77.             InetAddress ipAddressHere=packet.getAddress();
  78.             int portHere=packet.getPort();
  79.  
  80.             if(flag){ // komunikacija server-klient
  81.  
  82.                 System.out.print("Klient se najavi so korisnicko ime: ");
  83.                 mapKlienti.put(ipAddressHere,portHere);
  84.                 String username=receivePacket();
  85.                 System.out.println(username);
  86.  
  87.                 String poraka=receivePacket();
  88.                 System.out.println("Klient saka da isprati: "+poraka);
  89.                 poraki.add(poraka);
  90.  
  91.                 //prati ja porakata na site klienti
  92.                 for(InetAddress address:mapKlienti.keySet()){
  93.                     for(String msg: poraki){
  94.                         sendPacket("Dobivte poraka -> "+msg,address,mapKlienti.get(address));
  95.                     }
  96.                 }
  97.  
  98.             }else { //komunikacija bot-server
  99.                 System.out.print("Bot se najavi so korisnicko ime: ");
  100.                 mapBotovi.put(ipAddressHere,portHere);
  101.                 String username=receivePacket();
  102.                 System.out.println(username);
  103.  
  104.                 String primenaPoraka=receivePacket();
  105.                 if(primenaPoraka.equals("zdravo")){
  106.                     sendPacket("Zdravo i od mene!",ipAddressHere,portHere);
  107.                 }
  108.  
  109.                 //prati ja porakata na site botovi
  110.                 for(InetAddress address:mapBotovi.keySet()){
  111.                     for(String msg: poraki){
  112.                         sendPacket("Dobivte poraka -> "+msg,address,mapBotovi.get(address));
  113.                     }
  114.                 }
  115.             }
  116.         }
  117.  
  118.  
  119.     }
  120.  
  121.     public static void main(String[] args) {
  122.         Server server=new Server();
  123.         server.start();
  124.     }
  125.  
  126. }
  127. ----------------CLIENT------------
  128. public class Client extends Thread {
  129.  
  130.     private DatagramSocket socket;
  131.     private DatagramPacket packet;
  132.     private final int serverPort=8080, clientPort=8081;
  133.     private byte[] buffer;
  134.  
  135.     public Client() {
  136.  
  137.         try {
  138.  
  139.             socket =new DatagramSocket(clientPort);
  140.             buffer=new byte[1024];
  141.  
  142.         } catch (SocketException e) {
  143.             e.printStackTrace();
  144.         }
  145.  
  146.     }
  147.  
  148.     public void resetBuffer(){
  149.         buffer=new byte[1024];
  150.     }
  151.  
  152.     public void sendPacket(String message, InetAddress ipClient){
  153.  
  154.         resetBuffer();
  155.         buffer=message.getBytes();
  156.         packet =new DatagramPacket(buffer,buffer.length,ipClient,serverPort);
  157.         try {
  158.             socket.send(packet);
  159.         } catch (IOException e) {
  160.             e.printStackTrace();
  161.         }
  162.  
  163.     }
  164.  
  165.     public String receivePacket(){
  166.         String retString=null;
  167.  
  168.         resetBuffer();
  169.         packet=new DatagramPacket(buffer,buffer.length);
  170.         try {
  171.             socket.receive(packet);
  172.             retString=new String(packet.getData()).trim();
  173.         } catch (IOException e) {
  174.             e.printStackTrace();
  175.         }
  176.  
  177.         return retString;
  178.     }
  179.  
  180.     @Override
  181.     public void run() {
  182.  
  183.         //poraka deka e klient so username
  184.         try {
  185.             sendPacket("*client",InetAddress.getLocalHost() );
  186.             sendPacket("David",InetAddress.getLocalHost());
  187.         } catch (UnknownHostException e) {
  188.             e.printStackTrace();
  189.         }
  190.  
  191.         new Thread(new ClientListener(socket)).start();
  192.  
  193.         //isprakanje na poraka
  194.         try {
  195.             sendPacket("zdravo jas sum David",InetAddress.getLocalHost());
  196.         } catch (UnknownHostException e) {
  197.             e.printStackTrace();
  198.         }
  199.  
  200.     }
  201.  
  202.     public static void main(String[] args) {
  203.         Client client=new Client();
  204.         client.start();
  205.     }
  206. }
  207. ------------CLIENT-LISTENER-----------------
  208. public class ClientListener extends Thread {
  209.  
  210.     private DatagramSocket socket;
  211.     private DatagramPacket packet;
  212.     private byte[] buffer;
  213.  
  214.     public ClientListener(DatagramSocket socket) {
  215.         this.socket = socket;
  216.         buffer=new byte[1024];
  217.     }
  218.  
  219.     @Override
  220.     public void run() {
  221.  
  222.         while (true){
  223.             buffer=new byte[1024];
  224.             packet=new DatagramPacket(buffer,buffer.length);
  225.             try {
  226.                 socket.receive(packet);
  227.             } catch (IOException e) {
  228.                 e.printStackTrace();
  229.             }
  230.             String receivedMsg=new String(packet.getData()).trim();
  231.             System.out.println(receivedMsg);
  232.         }
  233.  
  234.     }
  235. }
  236. ----------------------------BOT-------------------
  237. public class Bot extends Thread {
  238.  
  239.     private DatagramSocket socket;
  240.     private DatagramPacket packet;
  241.     private final int serverPort=8080, botPort =8084;
  242.     private byte[] buffer;
  243.  
  244.     public Bot() {
  245.  
  246.         try {
  247.  
  248.             socket =new DatagramSocket(botPort);
  249.             buffer=new byte[1024];
  250.  
  251.         } catch (SocketException e) {
  252.             e.printStackTrace();
  253.         }
  254.  
  255.     }
  256.  
  257.     public void resetBuffer(){
  258.         buffer=new byte[1024];
  259.     }
  260.  
  261.     public void sendPacket(String message, InetAddress ipBot){
  262.  
  263.         resetBuffer();
  264.         buffer=message.getBytes();
  265.         packet =new DatagramPacket(buffer,buffer.length,ipBot,serverPort);
  266.         try {
  267.             socket.send(packet);
  268.         } catch (IOException e) {
  269.             e.printStackTrace();
  270.         }
  271.  
  272.     }
  273.  
  274.     public String receivePacket(){
  275.         String retString=null;
  276.  
  277.         resetBuffer();
  278.         packet=new DatagramPacket(buffer,buffer.length);
  279.         try {
  280.             socket.receive(packet);
  281.             retString=new String(packet.getData()).trim();
  282.         } catch (IOException e) {
  283.             e.printStackTrace();
  284.         }
  285.  
  286.         return retString;
  287.     }
  288.  
  289.     @Override
  290.     public void run() {
  291.  
  292.         //poraka deka e bot
  293.         try {
  294.             sendPacket("*bot",InetAddress.getLocalHost() );
  295.             sendPacket("ChatBot1",InetAddress.getLocalHost());//username
  296.         } catch (UnknownHostException e) {
  297.             e.printStackTrace();
  298.         }
  299.  
  300.         new Thread(new ClientListener(socket)).start(); //istata ja koristam za slusanje i za botovite...
  301.  
  302.         //prati poraka zdravo
  303.         try {
  304.             sendPacket("zdravo",InetAddress.getLocalHost());
  305.         } catch (UnknownHostException e) {
  306.             e.printStackTrace();
  307.         }
  308.  
  309.  
  310.     }
  311.  
  312.     public static void main(String[] args) {
  313.         Bot bot=new Bot();
  314.         bot.start();
  315.     }
  316. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement