· 7 years ago · Jan 30, 2019, 07:14 AM
1
2
3
4import java.io.BufferedReader;
5
6import java.io.BufferedWriter;
7import java.io.ByteArrayOutputStream;
8import java.io.DataOutputStream;
9import java.io.File;
10import java.io.FileOutputStream;
11import java.io.IOException;
12import java.io.InputStreamReader;
13import java.io.OutputStream;
14import java.io.OutputStreamWriter;
15import java.io.PrintWriter;
16import java.io.UnsupportedEncodingException;
17import java.net.ServerSocket;
18import java.net.Socket;
19import java.nio.CharBuffer;
20import java.nio.charset.Charset;
21//import org.apache.commons.codec.binary.Hex;
22import java.sql.Connection;
23import java.sql.DriverManager;
24import java.sql.PreparedStatement;
25import java.sql.ResultSet;
26import java.sql.SQLException;
27import java.sql.Statement;
28import java.time.Year;
29import java.util.Arrays;
30import java.util.concurrent.TimeUnit;
31
32import javax.xml.bind.DatatypeConverter;
33
34import javafx.scene.text.Font;
35import javafx.scene.text.FontPosture;
36import javafx.scene.text.FontWeight;
37import javafx.scene.text.Text;
38
39/** klasa obsługująca połączenie pomiędzy serwerem i klientem */
40class SingleService extends Thread
41{
42 /** gniazdo reprezentujące połączenie między serwerem i klientem */
43 private Socket socket;
44
45 /** buforowany strumień wejściowy */
46 private BufferedReader in;
47 private BufferedReader in2;
48
49 /** strumień wyjściowy */
50 private PrintWriter out;
51 private FileOutputStream OUT1;
52 private OutputStream sockOutput=null ;
53
54 private DataOutputStream dOut;
55 public byte wartosc;
56 public String id=null;
57 public static String daneZbazy;
58 public static int buforWyjsciowy[]=new int[80];
59 public static int IDbufora=0;
60 static String connectionString = "jdbc:mysql://127.0.0.1/test?user=root";
61
62
63
64 /**
65 * konstruktor obiektu
66 * @param s gniazdo reprezentujące połączenie pomiędzy serwerem a klientem
67 * @throws IOException błąd podczas pobierana strumienia wyjściowego z
68 * gniazda
69 */
70 public SingleService(Socket s) throws IOException
71 {
72 socket = s;
73
74 // bufor wyjściowy (do niego będziemy zapisywać dane wysyłane do
75 // klienta); true oznacza auto-flush
76 out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket
77 .getOutputStream())), true);
78
79 dOut= new DataOutputStream(socket.getOutputStream());
80
81 // bufor wejściowy (z niego będziemy odczytywać dane od klienta)
82 in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
83 // in2= new BufferedReader(new InputStreamReader(socket.getInputStream()));
84
85 // uruchom wÄ…tek
86 start();
87 }
88
89
90
91 public static String toHexadecimal(String text) throws UnsupportedEncodingException
92 {
93 byte[] myBytes = text.getBytes("UTF-8");
94
95 return DatatypeConverter.printHexBinary(myBytes);
96 }
97
98 public static String toHexString(byte[] array) {
99 return DatatypeConverter.printHexBinary(array);
100 }
101
102
103
104 public void run()
105 {
106
107 char tab[]=new char [556];
108
109 char wyslanie[] = new char[14];
110 byte wyjscie[]=new byte[8];
111 int crc= 0x0000FFFF; //crc 16, w java int 32 bity
112 char crcw1= 0xFFFF;
113 int crcw2= 0xFFFF;
114 int crcw3= 0xFFFF;
115 // public String test;
116 int zapis[]= new int[76];
117
118
119 try
120 {
121
122
123 while (true)
124 {
125 crc= 0xFFFF;
126
127
128 int idwbazie=4;
129 int nrbajtu=15;
130 int idzapis=0;
131
132 StringBuilder sb = new StringBuilder();
133
134 for (int i=0;i<=277;i++) { //278 bajtow
135
136
137 tab[i]=0; //zerowanie tablicy
138
139 }
140
141
142
143 String nrsterownika;
144 String MACadress;
145
146
147 byte a,b,c;
148
149
150 int temperaturaKomina=0;
151 int czasDoPodania=0;
152 int czasMiedziPodawaniem=0;
153 int maksymalnyCzasObiegu=0;
154 int tempZpilotem=0;
155
156 byte mac;
157
158
159
160 char aan='\u00c3';
161
162 in.read(tab);
163 TimeUnit.MILLISECONDS.sleep(200);
164
165 nrsterownika=(sb.append(tab[4])+""+(tab[5])+""+(tab[6])+""+(tab[7])+""+(tab[8])+""+(tab[9])+""+(tab[10])+""+(tab[11]));
166
167
168
169
170
171
172
173
174 wyjscie[0]=(byte) 0x3c;
175 wyjscie[1]=(byte) 0xc3;
176 wyjscie[2]=(byte)0x00;
177 wyjscie[3]=(byte)25;
178 wyjscie[4]=(byte)66;
179
180
181 wyjscie[5]= (byte) (crc16(wyjscie, 5)>>8);
182 wyjscie[6]= (byte) ((crc16(wyjscie, 5) & 0xff));
183
184
185 dOut.write(wyjscie,0,7);
186
187
188 TimeUnit.MILLISECONDS.sleep(200);
189
190 wyjscie[0]=(byte) 0x3c;
191 wyjscie[1]=(byte) 0xc3;
192 wyjscie[2]=(byte)0x00;
193 wyjscie[3]=(byte)26;
194 wyjscie[4]=(byte)63;
195
196
197 wyjscie[5]= (byte) (crc16(wyjscie, 5)>>8);
198 wyjscie[6]= (byte) ((crc16(wyjscie, 5) & 0xff));
199
200
201 dOut.write(wyjscie,0,7);
202
203 TimeUnit.MILLISECONDS.sleep(500);
204
205 wyjscie[0]=(byte) 0x3c;
206 wyjscie[1]=(byte) 0xc3;
207 wyjscie[2]=(byte)0x00;
208 wyjscie[3]=(byte)27;
209 wyjscie[4]=(byte)66;
210
211
212 wyjscie[5]= (byte) (crc16(wyjscie, 5)>>8);
213 wyjscie[6]= (byte) ((crc16(wyjscie, 5) & 0xff));
214
215
216 dOut.write(wyjscie,0,7);
217
218
219 TimeUnit.MILLISECONDS.sleep(500);
220
221 wyjscie[0]=(byte) 0x3c;
222 wyjscie[1]=(byte) 0xc3;
223 wyjscie[2]=(byte)0x00;
224 wyjscie[3]=(byte)28;
225 wyjscie[4]=(byte)66;
226
227
228 wyjscie[5]= (byte) (crc16(wyjscie, 5)>>8);
229 wyjscie[6]= (byte) ((crc16(wyjscie, 5) & 0xff));
230
231
232 dOut.write(wyjscie,0,7);
233
234 TimeUnit.MILLISECONDS.sleep(500);
235
236 wyjscie[0]=(byte) 0x3c;
237 wyjscie[1]=(byte) 0xc3;
238 wyjscie[2]=(byte)0x00;
239 wyjscie[3]=(byte)29;
240 wyjscie[4]=(byte)66;
241
242
243 wyjscie[5]= (byte) (crc16(wyjscie, 5)>>8);
244 wyjscie[6]= (byte) ((crc16(wyjscie, 5) & 0xff));
245
246
247 dOut.write(wyjscie,0,7);
248
249
250 TimeUnit.MILLISECONDS.sleep(500);
251
252 wyjscie[0]=(byte) 0x3c;
253 wyjscie[1]=(byte) 0xc3;
254 wyjscie[2]=(byte)0x00;
255 wyjscie[3]=(byte)30;
256 wyjscie[4]=(byte)66;
257
258
259 wyjscie[5]= (byte) (crc16(wyjscie, 5)>>8);
260 wyjscie[6]= (byte) ((crc16(wyjscie, 5) & 0xff));
261
262
263 dOut.write(wyjscie,0,7);
264
265 TimeUnit.MILLISECONDS.sleep(500);
266
267
268
269 System.out.println("");
270 System.out.println("TUTAJ:");
271
272 System.out.println("");
273 System.out.println("TUTAJ2:"+(Arrays.toString(wyjscie)));
274
275
276
277 // dOut.write(wyjscie,0,7);
278
279
280
281
282
283
284
285
286
287
288
289 byte[] bytes=Charset.forName("UTF-8").encode(CharBuffer.wrap(tab)).array();
290
291
292
293 //System.out.println(bytes);
294
295
296
297 for (int i=0;i<=277;i++) { //278 bajtow
298
299
300 a=(byte)tab[i];
301 System.out.printf("%02x",a); //dzialajaca petla na int
302
303
304 }
305
306
307
308
309
310 System.out.println(" ");
311
312 for (int i=0;i<=275;i++) { //278 bajtow CRC DANYCH WEJSCIOWYCH
313
314
315 crc = (((crc << 8) & 0xFFFF) ^ crctab[(crc >> 8) ^ (tab[i] & 0xFF)]);
316
317 }
318
319
320 byte b_temperaturaZewnetrzna=(byte)tab[19];
321
322 byte b1_temperaturaKomina=(byte)tab[21]; //TEMP KOMINA
323 byte b2_temperaturaKomina=(byte)tab[22];
324
325 byte b1_czasDoPodania=(byte)tab[31]; //czas do podania
326 byte b2_czasDoPodania=(byte)tab[32];
327
328 byte b1_czasMiedziPodawaniem=(byte)tab[40]; //czas miedzy podawaniem
329 byte b2_czasMiedzyPodawaniem=(byte)tab[41];
330
331 byte b1_maksymalnyCzasObiegu=(byte)tab[44];
332 byte b2_maksymalnyCzasObiegu=(byte)tab[45]; //maksymalny czas obiegu
333
334 byte b1_tempZpilotem=(byte)tab[87];
335 byte b2_tempZpilotem=(byte)tab[88]; //temp pomieszczenia w ktorym znajduje sie pilot
336
337 temperaturaKomina=(b1_temperaturaKomina<<8) | (b2_temperaturaKomina);
338 czasDoPodania=(b1_czasDoPodania<<8) | (b2_czasDoPodania);
339 czasMiedziPodawaniem=(b1_czasMiedziPodawaniem<<8) | (b2_czasMiedzyPodawaniem);
340 maksymalnyCzasObiegu=(b1_maksymalnyCzasObiegu<<8) | (b2_maksymalnyCzasObiegu);
341 tempZpilotem=(b1_tempZpilotem<<8) | (b2_tempZpilotem);
342
343
344
345 byte MAC1=(byte)tab[90];
346 byte MAC2=(byte)tab[91];
347 byte MAC3=(byte)tab[92];
348 byte MAC4=(byte)tab[93];
349 byte MAC5=(byte)tab[94];
350 byte MAC6=(byte)tab[95];
351
352
353
354
355
356
357 System.out.printf("MAC1dziesietnie: "+MAC1+":"+MAC2+":"+MAC3+":"+MAC4+":"+MAC5+":"+MAC6); //NA RAZIE JEST POPSUTY I SIE NIE ZMIENIA?
358 System.out.println(" ");
359 System.out.printf("Mac2pelny: "+"%02x",+MAC1);
360 System.out.printf(":"+"%02x",+MAC2);
361 System.out.printf(":"+"%02x",+MAC3);
362 System.out.printf(":"+"%02x",+MAC4);
363 System.out.printf(":"+"%02x",+MAC5);
364 System.out.printf(":"+"%02x",+MAC6);
365
366
367 System.out.println(" ");
368 System.out.printf("CRC: "+"%02x",crc);
369
370
371 System.out.println(" ");
372 System.out.println("Temp komina: "+temperaturaKomina);
373 System.out.println("Temp zewnetrzna: "+b_temperaturaZewnetrzna);
374 System.out.printf("Temperatura zewnetrzna w formacie byte: "+"%02x",b_temperaturaZewnetrzna);
375 System.out.printf("Nrsterow1: "+tab[4]);
376 System.out.println(" ");
377
378
379 System.out.println(" ");
380 //System.out.print((int)tab[15]);
381 System.out.println(" ");
382
383 nrsterownika=(sb.append(tab[4])+""+(tab[5])+""+(tab[6])+""+(tab[7])+""+(tab[8])+""+(tab[9])+""+(tab[10])+""+(tab[11])); //NUMER STEROWNIKA
384
385 System.out.println("Nr sterownika: "+nrsterownika);
386
387 tworzenieBazy(nrsterownika);
388
389 //WYPELNIANIE TABLICY WARTOSCIAMI
390
391
392
393 for(idzapis=0;idzapis<=3;idzapis++)
394 {
395 zapis[idzapis]=(int)tab[nrbajtu];
396 nrbajtu++;
397 }
398 zapis[idzapis]=b_temperaturaZewnetrzna;
399 idzapis++;
400 nrbajtu=20;
401
402 zapis[idzapis]=(int)tab[nrbajtu];
403 idzapis++;
404 nrbajtu=21;
405
406 zapis[idzapis]=temperaturaKomina;
407 idzapis++;
408 nrbajtu=23;
409
410 for(idzapis=7;idzapis<=14;idzapis++)
411 {
412 zapis[idzapis]=(int)tab[nrbajtu];
413 nrbajtu++;
414 }
415
416 zapis[idzapis]=czasDoPodania;
417 idzapis++;
418 nrbajtu=33;
419
420 for(idzapis=16;idzapis<=22;idzapis++)
421 {
422 zapis[idzapis]=(int)tab[nrbajtu];
423 nrbajtu++;
424 }
425
426 zapis[idzapis]=czasMiedziPodawaniem;
427 idzapis++;
428 nrbajtu=42;
429
430 zapis[idzapis]=(int)tab[nrbajtu];
431 idzapis++;
432 nrbajtu=43;
433
434 zapis[idzapis]=(int)tab[nrbajtu];
435 idzapis++;
436 nrbajtu=44;
437
438 zapis[idzapis]=maksymalnyCzasObiegu;
439 idzapis++;
440 nrbajtu=46;
441
442 for(idzapis=27;idzapis<=66;idzapis++)
443 {
444 zapis[idzapis]=(int)tab[nrbajtu];
445 nrbajtu++;
446 }
447
448 zapis[idzapis]=tempZpilotem;
449 idzapis++;
450 nrbajtu=89;
451
452 for(idzapis=68;idzapis<=73;idzapis++)
453 {
454 zapis[idzapis]=(int)tab[nrbajtu];
455 nrbajtu++;
456 }
457
458
459
460 for (int i=0;i<=75;i++) { //278 bajtow
461
462
463 System.out.print(zapis[i]+" "); //WYSWIETLENIE TABLICY WARTOSCI
464
465
466 }
467
468
469
470
471 // out.flush();
472 //ZAPISANIE DO BAZY DANYCH
473 //System.out.println("\n" + daneZbazy + " ");
474 zapisDoBazy(nrsterownika,zapis,idwbazie);
475 //TimeUnit.SECONDS.sleep(4); OPOZNIENIE
476
477 //ODCZYT I WYSWIETLENIE Z BAZY
478 // wyswietlDaneZBazy(nrsterownika);
479
480 }
481
482
483 //System.out.println("zamykanie...");
484 } catch (IOException | ClassNotFoundException | SQLException | InterruptedException e) {
485 // TODO Auto-generated catch block
486 //e.printStackTrace();
487 }
488 finally
489 {
490
491 try
492 {
493 socket.close(); // zamknij gniazdo reprezentujące połączenie
494 }
495 catch (IOException e)
496 {
497 // System.out.println(e.getMessage());
498 }
499 }
500
501
502
503 }
504
505 static int DaneZBazy(String nrsterownika, int indeksParametruWBazie) throws ClassNotFoundException, SQLException{
506
507 String myDriver = "com.mysql.jdbc.Driver";
508 //String myUrl = "jdbc:mysql://db4free.net/prond1";
509 Class.forName(myDriver);
510 Connection conn = DriverManager.getConnection(connectionString);
511
512 Statement st = conn.createStatement();
513 try{
514
515
516 String query = "SELECT `Wartosc` FROM s"+nrsterownika+" WHERE `id parametru`=4";
517 PreparedStatement preparedStmt = conn.prepareStatement(query);
518
519 ResultSet rs = st.executeQuery(query);
520
521
522 for(int i=0;i<=76;i++)
523 {
524
525
526 if(rs.next()) {
527 daneZbazy= rs.getString(1);
528 buforWyjsciowy[i]=Integer.parseInt(daneZbazy);
529 }
530
531 }
532 // System.out.print("Wartosc: "+(Arrays.toString(buforWyjsciowy)));
533
534 }
535 catch(SQLException e) {
536 e.printStackTrace();
537 }
538
539 finally
540 {
541 conn.close();
542 }
543
544 return buforWyjsciowy[indeksParametruWBazie];
545
546
547 }
548
549
550
551
552 public void zapisDoPliku(String wartosc) throws IOException
553 {
554
555 //wartosc =this.getWartosc();
556 File zapis = new File("zapis.txt");
557 FileOutputStream fos = new FileOutputStream(zapis);
558
559 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
560
561
562 bw.newLine();
563 bw.write(wartosc);
564 bw.newLine();
565 bw.write("\n\r");
566
567
568 bw.close();
569
570 }
571
572 private void zapisDoBazy(String nrsterownika, int zapis[], int idwbazie ) throws ClassNotFoundException, SQLException {
573
574
575 String myDriver = "com.mysql.jdbc.Driver";
576 String myUrl = "jdbc:mysql://127.0.0.1/test?user=root";
577 Class.forName(myDriver);
578 Connection conn = DriverManager.getConnection(connectionString);
579
580
581 try
582 {
583
584 int idzapis=0;
585
586
587
588 // create a java mysql database connection
589
590
591 for(idzapis=0;idzapis<=74;idzapis++) { //id=73
592
593 // create the java mysql update preparedstatement
594 String query = "update s"+nrsterownika+" set `Wartosc` = ? where `id parametru` = ? ";
595 PreparedStatement preparedStmt = conn.prepareStatement(query);
596
597 preparedStmt.setString(1, Integer.toString(zapis[idzapis]));
598 preparedStmt.setString(2, Integer.toString(idwbazie));
599
600 preparedStmt.executeUpdate();
601 idwbazie++;
602 }
603
604
605
606
607 String query = "SELECT `Wartosc` FROM s"+nrsterownika;
608 PreparedStatement preparedStmt = conn.prepareStatement(query);
609
610 ResultSet rs = preparedStmt.executeQuery(query);
611
612
613 for(int i=0;i<=76;i++)
614 {
615
616
617 if(rs.next()) {
618 daneZbazy = rs.getString(1);
619 buforWyjsciowy[i]=(Integer.parseInt(daneZbazy));
620 }
621
622 }
623
624
625 zapisDoPliku(Arrays.toString(buforWyjsciowy));
626
627 System.out.println(" ");
628 // System.out.println(Arrays.toString(buforWyjsciowy));
629 for(int i=0;i<=76;i++)
630 {
631 System.out.print(buforWyjsciowy[i]+" ");
632
633 }
634 System.out.println(" ");
635
636 conn.close();
637 }
638
639
640
641 catch (Exception e)
642 {
643 //System.err.println("WYJATEK PRZY BUFORZE WYJSCIOWYM ");
644 //System.err.println(e.getMessage());
645 }
646 //int tabWyjs[]=new int[600];
647 finally
648 {
649 conn.close();
650 }
651
652 }
653
654 private void tworzenieBazy(String nrSterownika) throws SQLException, ClassNotFoundException
655 {
656
657 String myDriver = "com.mysql.jdbc.Driver";
658 String myUrl = "jdbc:mysql://127.0.0.1/test?user=root";
659 Class.forName(myDriver);
660 Connection conn = DriverManager.getConnection(connectionString);
661 try
662 {
663
664 // create a java mysql database connection
665
666
667 // create the java mysql update preparedstatement
668 String query = "CREATE TABLE IF NOT EXISTS s"+nrSterownika+" AS\r\n" +
669 " SELECT `id parametru`, `Nazwa parametru`,`Wartosc`,`Komentarz`\r\n" +
670 " FROM sterownik";
671
672 PreparedStatement preparedStmt = conn.prepareStatement(query);
673 // preparedStmt.setInt(1, nrSterownika);
674
675 preparedStmt.executeUpdate();
676
677 conn.close();
678 }
679 catch (Exception e)
680 {
681 System.err.println("Got an exception! ");
682 System.err.println(e.getMessage());
683 }
684 finally
685 {
686 conn.close();
687 }
688 }
689
690 char[] crctab= {0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
691 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
692 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,
693 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,
694 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,
695 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,
696 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
697 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,
698 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,
699 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,
700 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,
701 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
702 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,
703 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,
704 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,
705 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,
706 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
707 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,
708 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,
709 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,
710 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,
711 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
712 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,
713 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,
714 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,
715 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,
716 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
717 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,
718 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,
719 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,
720 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
721 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0};
722
723 private char wyslanies[];
724
725
726 public int crc16(byte[] wyjscie, int len)
727 {
728 int crc = 0xFFFF;
729 int i;
730
731 for (i=0; i<len; i++)
732 {
733 crc = ((crc << 8) & 0xFFFF) ^ crctab[(crc >> 8) ^ (wyjscie[i] & 0xFF)];
734 }
735
736 return crc;
737
738 }
739
740 public void wypelnianieTablicy()
741 {
742
743 }
744
745
746}
747
748/** klasa implementująca serwer w oparciu o protokół TCP */
749public class str
750{
751 /** numer portu na którym serwer będzie nasłuchiwał zgłoszeń */
752 static final int PORT = 9701;
753
754 /**
755 * główna metoda aplikacji
756 * @param args argumenty wywołania programu
757 * @throws IOException błąd podczas tworzenia gniazda
758 */
759 public static void main(String args[]) throws IOException
760 {
761 // utwórz klasę serwera
762 ServerSocket server = new ServerSocket(PORT);
763
764 System.out.println("Server started");
765
766
767
768 try
769 {
770 while (true)
771 {
772 // zatrzymanie aż do nawiązania połączenia, metoda zwraca
773 // odnośnik do gniazda reprezentującego połączenie
774 Socket client = server.accept();
775
776
777
778 try
779 {
780 // utwórz obiekt obsługujący połączenie reprezentowane przez
781 // "client"
782 new SingleService(client);
783 }
784 catch (IOException e)
785 {
786 client.close();
787 System.out.println(e.getMessage());
788 }
789 }
790 }
791 finally
792 {
793 // "zamknij" serwer
794 server.close();
795 }
796 }
797 }