SHARE
TWEET

Untitled

a guest Oct 16th, 2019 84 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.net.*;
  2. import java.io.*;
  3. public class userapplication {
  4.  
  5.     static int packetCounter = 0;
  6.    
  7.     /**
  8.      * @param args
  9.      * @throws IOException
  10.      */
  11.     public static void main(String[] args) throws IOException {
  12.        
  13.         userapplication echopackets = new userapplication ();// αντικειμενο που θα μας βοηθησει στην κληση της συναρτησης echo
  14.        
  15.        
  16.         //  δημιουργια αρχειων
  17.         PrintWriter responseTimesEcho = new PrintWriter("responseTimesEcho.txt", "UTF-8");
  18.         PrintWriter responseTimesEchoWithoutDelay = new PrintWriter("responseTimesEchoWithoutDelay.txt", "UTF-8");
  19.         PrintWriter temper = new PrintWriter("temper.txt", "UTF-8");
  20.         FileOutputStream im = new FileOutputStream("M1.jpg");
  21.         // κωδικοι Ιθακης
  22.         String EchoCode = "E9260";
  23.         String EchoCodeWithoutDelay ="E0000";
  24.         String imageCode = "M8151FLOW=ON";
  25.         String EchoCode2= EchoCode+ "T00";
  26.         int clientPort = 48020;
  27.         int serverPort = 38020;
  28.        
  29.        
  30.         //μεταβλητες που θα βοηθησουν στο να τρεχει ενα κομματι κωδικα οσο χρονο επιθυμουμε
  31.         long timeRun = System.currentTimeMillis();
  32.         long endRun = timeRun + 30000;
  33.        
  34.        
  35.         //βρογχος ωστε να τρεχει συγκεκριμενο χρονο ο κωδικας που βρισκεται μεσα σε αυτον
  36.         while (System.currentTimeMillis() < endRun) {
  37.            
  38.             echopackets.echo(responseTimesEcho, EchoCode,clientPort, serverPort);//κληση της echo για 4 λεπτα
  39.            
  40.         }
  41.        
  42.         responseTimesEcho.close();
  43.        
  44.         timeRun = System.currentTimeMillis();
  45.         endRun = timeRun + 30000;
  46.         packetCounter = 0;
  47.        
  48.        
  49.         //βρογχος ωστε να τρεχει συγκεκριμενο χρονο ο κωδικας που βρισκεται μεσα σε αυτον
  50.         while (System.currentTimeMillis() < endRun) {
  51.            
  52.             echopackets.echo(responseTimesEchoWithoutDelay,EchoCodeWithoutDelay,clientPort,serverPort);//κληση της echo με code Ε0000 για να μην υπαρχει καθυστερηση απο τον server
  53.            
  54.         }
  55.        
  56.        
  57.         responseTimesEchoWithoutDelay.close();
  58.        
  59.         // ληψη θερμοκρασιας απο τον αισθητηρα 00 με χρηση του επιθεματος Τ00
  60.            
  61.         echopackets.temperatures(temper,EchoCode2,clientPort,serverPort);//κληση της temperature με echocode που περιλαμβανει και κωδικο ΤΧΧ
  62.            
  63.            
  64.            
  65.    
  66.         temper.close();
  67.        
  68.        
  69.        
  70.        
  71.         //ληψη εικονας
  72.        
  73.         echopackets.image(im,imageCode, clientPort, serverPort);
  74.         im.close();
  75.        
  76.        
  77.        
  78.     }
  79.    
  80.     //συναρτηση που υλοποιει ενα request του client προς τον Server Ithaki
  81.    
  82.     public void  Requests (String c , int sp ) throws IOException {
  83.        
  84.         DatagramSocket s = new DatagramSocket();
  85.        
  86.         String packetInfo = c;
  87.        
  88.        
  89.        
  90.         int serverPort = sp;
  91.        
  92.         byte [] code = packetInfo.getBytes();
  93.        
  94.         byte[] hostIP = { (byte)155,(byte)207,(byte)18,(byte)208 };
  95.        
  96.         InetAddress hostAddress = InetAddress.getByAddress(hostIP);
  97.        
  98.         DatagramPacket p = new DatagramPacket(code,code.length, hostAddress,serverPort);
  99.        
  100.         s.send(p);
  101.        
  102.         s.close();
  103.     }
  104.    
  105.     //συναρτηση echo οπου γινεται η ληψη του πακετου απο το server, , και χρονομετρουνται τα response times του συστηματος
  106.    
  107.     public void echo (PrintWriter resTiEcho, String code,int clp,int sp) throws IOException {
  108.        
  109.        
  110.        
  111.         int clientPort = clp;
  112.        
  113.         DatagramSocket r = new DatagramSocket(clientPort);
  114.         r.setSoTimeout(1200);
  115.        
  116.         byte[] rxbuffer = new byte[32];
  117.        
  118.         DatagramPacket q = new DatagramPacket(rxbuffer,rxbuffer.length);
  119.        
  120.         String message = new String(rxbuffer,0,q.getLength());
  121.        
  122.         long startT;
  123.         long endT;
  124.        
  125.    
  126.         int responseTimes;
  127.        
  128.        
  129.            
  130.              
  131.             Requests (code,sp); // κληση της Request για να γινει αιτημα του client προς τον server
  132.            
  133.             try {
  134.                
  135.                 startT = System.currentTimeMillis();// χρονος εκκινησης του προγραμματος
  136.                
  137.                 r.receive(q);
  138.                
  139.                 endT = System.currentTimeMillis();
  140.                
  141.                 responseTimes = (int)(endT - startT); // ευρεση χρονου αποκρισης
  142.                
  143.                 resTiEcho.println(responseTimes); // εγγραφη των χρονων αποκρισης σε αρχειο
  144.                  
  145.                
  146.                 message = new String(rxbuffer,0,q.getLength());
  147.                 packetCounter++; // αριθμηση των πακετων που λαμβανουμε
  148.                 System.out.println(message +" "+ "packet No:"+packetCounter);
  149.                
  150.             }
  151.                 catch (Exception x) {
  152.                     System.out.println(x);
  153.                     }
  154.                
  155.            
  156.            
  157.        
  158.            
  159.            
  160.             r.close();
  161.        
  162.         }
  163.     // συναρτηση για την ληψη θερμοκρασιων απο τους αισθητηρες
  164.     public void temperatures (PrintWriter temp, String code,int clp,int sp) throws IOException {
  165.        
  166.         int clientPort = clp;
  167.        
  168.         DatagramSocket r = new DatagramSocket(clientPort);
  169.         r.setSoTimeout(1200);
  170.        
  171.         byte[] rxbuffer = new byte[55];
  172.        
  173.         DatagramPacket q = new DatagramPacket(rxbuffer,rxbuffer.length);
  174.        
  175.         String message = new String(rxbuffer,0,q.getLength());
  176.        
  177.         Requests (code,sp); // κληση της Request για να γινει αιτημα του client προς τον server
  178.        
  179.         try {
  180.            
  181.             r.receive(q);
  182.            
  183.             message = new String(rxbuffer,0,q.getLength());
  184.             packetCounter++;
  185.             System.out.println(message +" "+ "packet No:"+packetCounter);
  186.            
  187.         }
  188.             catch (Exception x) {
  189.                 System.out.println(x);
  190.                 }
  191.        
  192.        
  193.        
  194.         String temps = new String(rxbuffer,43,3);
  195.            
  196.         temp.println(temps); //εγγραψη των θερμοκρασιων σε αρχειο
  197.        
  198.        
  199.    
  200.        
  201.        
  202.         r.close();
  203.        
  204.        
  205.        
  206.     }
  207.    
  208.     public void image(FileOutputStream ima,String code,int clientPort,int sp) throws IOException {
  209.         DatagramSocket r = new DatagramSocket(clientPort);
  210.        
  211.        
  212.        
  213.         byte[] rxbuffer = new byte[128];
  214.        
  215.         DatagramPacket q = new DatagramPacket(rxbuffer,rxbuffer.length);
  216.        
  217.        
  218.        
  219.        
  220.             boolean flag = true;
  221.            
  222.            
  223.        
  224.            
  225.         while(flag) {
  226.                
  227.                 Requests (code,sp); // κληση της Request για να γινει αιτημα του client προς τον server
  228.                 r.receive(q);
  229.                 for(int i=0;i<128;i++) {
  230.            
  231.                     if(i<127) {
  232.                    
  233.                
  234.                         if(rxbuffer[i]==(byte)0xFF &&rxbuffer[i+1]==(byte)0xD9 ) {
  235.                    
  236.                             flag=false;
  237.                            
  238.                    
  239.                        
  240.                
  241.                     }
  242.                
  243.                     }
  244.                         System.out.println((int)rxbuffer[i]);
  245.                         ima.write(rxbuffer[i]);
  246.                        
  247.                 }
  248.        
  249.        
  250.             }
  251.         r.close();
  252.        
  253.     }
  254.        
  255.        
  256.        
  257.        
  258.        
  259.     }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top