package dom_1; import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.net.UnknownHostException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class Dom_1 { static String IP_LAN = "192.168.0.101"; //////////////////////////////////////////////////////////////////////////////// ////////////////////////////////возвращает IP LocalHost > 192.168.0.101(String): static int xIP = 0; //счёт IP LocalHost ////////////////////////////////////IP LocalHost static int [] IP_LocalHost_int = {0,0,0,0}; //192.168.0.101 //////////////////////////////////////////////////////////////////////////////// public static String IP_LocalHost() { //////////////////////////////////IP LocalHost: .../192.168.0.101 InetAddress LH = null; // LH try { LH = InetAddress.getLocalHost(); } catch (UnknownHostException e) { System.out.println(e.getMessage()); } //////////////////////////////////IP LocalHost > String String LH1 = ""; LH1 += LH; //////////////////////////////////String > byte[] byte[] bufer_LH = LH1.getBytes(); // LH1 > массив int LH1_L = bufer_LH.length; // length =21 //////////////////////////////////..../...... int LH1_S = 1; // смещение -length =8 for (xIP=0; ( (char)bufer_LH[xIP]!='/' ) && ( xIP < LH1_L ) ; xIP++) { LH1_S++; }; //////////////////////////////////смещение > ....../192.168.0.101 > String String LH1_IP = ""; for (xIP=LH1_S; xIP IP_LocalHost_int [0,0,0,0] String w = LH1_IP; // 192.168.0.101 w += "...."; //////////////////////////////////String > byte[] byte[] bufer_w = w.getBytes(); // w > массив //////////////////////////////////сброс int IP_TX_int_ST = 0; // счёт IP_TX_int int w_ST = 0; // счёт смещение bufer int w_S = 0; // счёт знаки 192=3,168=3,0=1,101=3, IP_LocalHost_int [0] = 0; IP_LocalHost_int [1] = 0; IP_LocalHost_int [2] = 0; IP_LocalHost_int [3] = 0; //////////////////////////////////цикл 192.168.0.101 int y = 0; for (y=0; y<4; y++) { ////////////////////////////////// for (xIP=w_ST; (char)bufer_w[xIP]!='.'; xIP++) { // length bufer =15 w_S++; // счёт смещение -length =3 }; ////////////////////////////////////////////////////////// if ( w_S == 3 ) { if ( (char)bufer_w[w_ST] == '2' ) {IP_LocalHost_int [IP_TX_int_ST] += 200;} if ( (char)bufer_w[w_ST] == '1' ) {IP_LocalHost_int [IP_TX_int_ST] += 100;} w_ST++;// счёт смещение bufer ///////////////////////////////////////////////////// if ( (char)bufer_w[w_ST] == '9' ) {IP_LocalHost_int [IP_TX_int_ST] += 90;} if ( (char)bufer_w[w_ST] == '8' ) {IP_LocalHost_int [IP_TX_int_ST] += 80;} if ( (char)bufer_w[w_ST] == '7' ) {IP_LocalHost_int [IP_TX_int_ST] += 70;} if ( (char)bufer_w[w_ST] == '6' ) {IP_LocalHost_int [IP_TX_int_ST] += 60;} if ( (char)bufer_w[w_ST] == '5' ) {IP_LocalHost_int [IP_TX_int_ST] += 50;} if ( (char)bufer_w[w_ST] == '4' ) {IP_LocalHost_int [IP_TX_int_ST] += 40;} if ( (char)bufer_w[w_ST] == '3' ) {IP_LocalHost_int [IP_TX_int_ST] += 30;} if ( (char)bufer_w[w_ST] == '2' ) {IP_LocalHost_int [IP_TX_int_ST] += 20;} if ( (char)bufer_w[w_ST] == '1' ) {IP_LocalHost_int [IP_TX_int_ST] += 10;} w_ST++;// счёт смещение bufer ///////////////////////////////////////////////////// if ( (char)bufer_w[w_ST] == '9' ) {IP_LocalHost_int [IP_TX_int_ST] += 9;} if ( (char)bufer_w[w_ST] == '8' ) {IP_LocalHost_int [IP_TX_int_ST] += 8;} if ( (char)bufer_w[w_ST] == '7' ) {IP_LocalHost_int [IP_TX_int_ST] += 7;} if ( (char)bufer_w[w_ST] == '6' ) {IP_LocalHost_int [IP_TX_int_ST] += 6;} if ( (char)bufer_w[w_ST] == '5' ) {IP_LocalHost_int [IP_TX_int_ST] += 5;} if ( (char)bufer_w[w_ST] == '4' ) {IP_LocalHost_int [IP_TX_int_ST] += 4;} if ( (char)bufer_w[w_ST] == '3' ) {IP_LocalHost_int [IP_TX_int_ST] += 3;} if ( (char)bufer_w[w_ST] == '2' ) {IP_LocalHost_int [IP_TX_int_ST] += 2;} if ( (char)bufer_w[w_ST] == '1' ) {IP_LocalHost_int [IP_TX_int_ST] += 1;} w_ST++;// счёт смещение bufer }; /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// if ( w_S == 2 ) { if ( (char)bufer_w[w_ST] == '9' ) {IP_LocalHost_int [IP_TX_int_ST] += 90;} if ( (char)bufer_w[w_ST] == '8' ) {IP_LocalHost_int [IP_TX_int_ST] += 80;} if ( (char)bufer_w[w_ST] == '7' ) {IP_LocalHost_int [IP_TX_int_ST] += 70;} if ( (char)bufer_w[w_ST] == '6' ) {IP_LocalHost_int [IP_TX_int_ST] += 60;} if ( (char)bufer_w[w_ST] == '5' ) {IP_LocalHost_int [IP_TX_int_ST] += 50;} if ( (char)bufer_w[w_ST] == '4' ) {IP_LocalHost_int [IP_TX_int_ST] += 40;} if ( (char)bufer_w[w_ST] == '3' ) {IP_LocalHost_int [IP_TX_int_ST] += 30;} if ( (char)bufer_w[w_ST] == '2' ) {IP_LocalHost_int [IP_TX_int_ST] += 20;} if ( (char)bufer_w[w_ST] == '1' ) {IP_LocalHost_int [IP_TX_int_ST] += 10;} w_ST++;// счёт смещение bufer ///////////////////////////////////////////////////// if ( (char)bufer_w[w_ST] == '9' ) {IP_LocalHost_int [IP_TX_int_ST] += 9;} if ( (char)bufer_w[w_ST] == '8' ) {IP_LocalHost_int [IP_TX_int_ST] += 8;} if ( (char)bufer_w[w_ST] == '7' ) {IP_LocalHost_int [IP_TX_int_ST] += 7;} if ( (char)bufer_w[w_ST] == '6' ) {IP_LocalHost_int [IP_TX_int_ST] += 6;} if ( (char)bufer_w[w_ST] == '5' ) {IP_LocalHost_int [IP_TX_int_ST] += 5;} if ( (char)bufer_w[w_ST] == '4' ) {IP_LocalHost_int [IP_TX_int_ST] += 4;} if ( (char)bufer_w[w_ST] == '3' ) {IP_LocalHost_int [IP_TX_int_ST] += 3;} if ( (char)bufer_w[w_ST] == '2' ) {IP_LocalHost_int [IP_TX_int_ST] += 2;} if ( (char)bufer_w[w_ST] == '1' ) {IP_LocalHost_int [IP_TX_int_ST] += 1;} w_ST++;// счёт смещение bufer }; /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// if ( w_S == 1 ) { if ( (char)bufer_w[w_ST] == '9' ) {IP_LocalHost_int [IP_TX_int_ST] += 9;} if ( (char)bufer_w[w_ST] == '8' ) {IP_LocalHost_int [IP_TX_int_ST] += 8;} if ( (char)bufer_w[w_ST] == '7' ) {IP_LocalHost_int [IP_TX_int_ST] += 7;} if ( (char)bufer_w[w_ST] == '6' ) {IP_LocalHost_int [IP_TX_int_ST] += 6;} if ( (char)bufer_w[w_ST] == '5' ) {IP_LocalHost_int [IP_TX_int_ST] += 5;} if ( (char)bufer_w[w_ST] == '4' ) {IP_LocalHost_int [IP_TX_int_ST] += 4;} if ( (char)bufer_w[w_ST] == '3' ) {IP_LocalHost_int [IP_TX_int_ST] += 3;} if ( (char)bufer_w[w_ST] == '2' ) {IP_LocalHost_int [IP_TX_int_ST] += 2;} if ( (char)bufer_w[w_ST] == '1' ) {IP_LocalHost_int [IP_TX_int_ST] += 1;} w_ST++;// счёт смещение bufer }; /////////////////////////////////////////////////////////// w_S = 0; // '.' // сброс счёт знаки 192=3,168=3,0=1,101=3, w_ST++; // '.' // счёт смещение bufer IP_TX_int_ST++; // счёт IP_TX_int }; // цикл 192.168.0.101 ///////////////////////////////////////////////////////////////// return LH1_IP; // String IP LocalHost } //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////поток 0 main: //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////поток 5 TCP Сервер: static int TX_st1;// RX_st счётчик пакетов static byte[] RX_byte_7 = new byte[1500]; // Ethernet // 10000 буфер поток = 8192 byte static int x_7 = 0; // счёт static int len_7 = 0; static int cikl_7 = 0; //цикл 5c static String s_7 = ""; static String s_7_TX = ""; static String s_7_RX = ""; //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////поток 6 TCP Клиент: static int flag_TCP_Клиент = 0; static byte[] RX_byte_8 = new byte[1500]; // Ethernet // 10000 буфер поток = 8192 static int x_8 = 0; // счёт static int len_8 = 0; static int cikl_8 = 0; static String s_8_TX = ""; static String s_8_RX = ""; static int flag_error_8 = 0; static String IP_LAN_WAN_8 = ""; // LAN_WAN static int flag_syn = 0; // //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////поток 0 Клиент: public static void main(String[] args) throws Exception { final String IP_LAN = IP_LocalHost(); // LAN //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////окно_Консоль: final JFrame frame = new JFrame( "Консоль" + IP_LocalHost()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(20, 20, 1000, 545); // x,y,размер,размер frame.setLayout(null); frame.setResizable(false); /////////////////////////////////////////////////////////// TextArea "TX" final JTextArea ta = new JTextArea("TX"); //"текст", 10, 20 Color RGB_Fon = new Color(253, 245, 230); // RGB фон ta.setBackground(RGB_Fon); // RGB фон Color RGB_Text = new Color(25, 25, 112); // RGB Text ta.setForeground(RGB_Text); // RGB Text ta.setFont(new Font("Dialog", Font.PLAIN, 14)); /////////////////////////////////////////////// ScrollPane JScrollPane sp = new JScrollPane (ta); sp.setBounds(5, 5, 982, 200); // x,y,размер,размер frame.add(sp); // добавить /////////////////////////////////////////////////////////// TextArea1 "RX" //final JTextArea ta1 = new JTextArea("RX"); //"текст", 10, 20 final JTextArea ta1 = new JTextArea( "IP КОМПА : " + IP_LAN + "\r\n" + "\r\n" + "введите в браузере телефона: http://" + IP_LAN ); //"текст", 10, 20 Color RGB_Fon_1 = new Color(253, 245, 230); // RGB фон ta1.setBackground(RGB_Fon_1); // RGB фон Color RGB_Text_1 = new Color(25, 25, 112); // RGB Text ta1.setForeground(RGB_Text_1); // RGB Text ta1.setFont(new Font("Dialog", Font.PLAIN, 14)); /////////////////////////////////////////////// ScrollPane JScrollPane sp1 = new JScrollPane (ta1); sp1.setBounds(5, 208, 982, 200); // x,y,размер,размер frame.add(sp1); // добавить //////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////Button "TCP_Клиент" JButton Button_TCP_Клиент = new JButton("TCP_Клиент"); Button_TCP_Клиент.setBounds(0, 450, 120, 24); // x,y,размер,размер Button_TCP_Клиент.setFont(new Font("Dialog", Font.PLAIN, 14));// шрифт frame.add(Button_TCP_Клиент); // добавить Button_TCP_Клиент.addActionListener(new ActionListener() { // Слушатель Button public void actionPerformed(ActionEvent event) { /////////////////////////////////////////////////////// flag_TCP_Клиент = 1; }}); //////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////Button "Сброс" JButton Button_Сброс = new JButton("Сброс"); Button_Сброс.setBounds(0, 480, 120, 24); // x,y,размер,размер Button_Сброс.setFont(new Font("Dialog", Font.PLAIN, 14));// шрифт frame.add(Button_Сброс); // добавить Button_Сброс.addActionListener(new ActionListener() { // Слушатель Button public void actionPerformed(ActionEvent event) { /////////////////////////////////////////////////////// flag_syn = 0; }}); //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////окно_Консоль: frame.setVisible(true); // true/false // включить окно_Консоль //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////поток 5 TCP Сервер: Thread Thready_5 = new Thread(new Runnable() { public void run() // поток 5 { ///////////////////////////////////////////////////////////// сервер-сокет: while(true) { s_7_RX = "----------------------------------------------------" + "\n"; ServerSocket server_7 = null; //слушаем порт 80 try { server_7 = new ServerSocket(80); // } catch (IOException e) { s_7_RX += "Сервер: Ошибка Сервер-сокет" + "\n"; } //создаём сокет для общения с клиентом Socket socket_7 = null; try { //accept() Ожидание подключения клиента socket_7 = server_7.accept(); s_7_RX += "Сервер: (SYN)" + "\n"; } catch (IOException e) { s_7_RX += "Сервер: Ошибка сокет" + "\n"; } //создаём поток ввода/вывода InputStream in_7 = null; OutputStream out_7 = null; try { in_7 = socket_7.getInputStream(); out_7 = socket_7.getOutputStream(); } catch (IOException e) { s_7_RX += "Сервер: Ошибка потока ввода/вывода" + "\n"; } /////////////////////////////////////////////////////////////////////////// IP_2 > LCD: //Inet_IP, Inet_порт s_7_RX += "Сервер: " + socket_7.getInetAddress() + ":" + socket_7.getPort(); //Local_IP, Local_порт s_7_RX += " >> " + socket_7.getLocalAddress() + ":" + socket_7.getLocalPort() + "\n"; /////////////////////////////////////////////////////////////////////////// RX_2: цикл 5с cikl_7 = 0; // сброс цикл 5с while(cikl_7 < 500)// цикл 5с { //останавливает поток на ms. try {Thread.sleep(10);} // CPU ! catch (InterruptedException e3) {} //проверка приёмного буфера len_7 = 0; // сброс len try { //available() получение количество доступных для чтения байтов потока InputStream len_7 = in_7.available(); } catch (IOException e3) { s_7_RX += "Сервер: Ошибка available" + "\n"; } //читаем приёмный буфер if (len_7>0){ if (len_7>1500){len_7=1500;}; // Ethernet s_7_RX += "Сервер: RX байт = " + len_7 + "\n"; cikl_7=500; // сброс цикл 5с //читаем поток InputStream for (x_7 = 0; x_70){ /////////////////////////////////////////////////////////////// RX > LCD: s_7_RX += new String(RX_byte_7, 0, len_7) + "\n"; // HEX > String ////////////////////////////////////////////////////////////система: RX ////////////////////////////////////////////////////////////система: TX s_7 = "HTTP/1.1 200 OK\r\n" + "Access-Control-Allow-Origin: *\r\n" + "Content-Type: text/html\r\n\r\n"; //s_7 += socket_7.getInetAddress() + ":" + socket_7.getPort() + "\n";// Inet_IP, Inet_порт //s_7 += "/" + TX_st1;// RX_st счётчик пакетов if (flag_syn == 0){ flag_syn = 1; // s_7 += "" + "Master_0" + //"" + "
" + //"" + "" + "" + //"" + "
" + "" + "
" + "
" + "" + "
" + // "" + // "" + "" + "" + "
"; }//flag_syn = 1; ////////////////////////////////////////////////////////////TX: ////////////////////////Text_TX > буфер byte[] b_TX_2 = s_7.getBytes(); s_7_RX += "Сервер: TX байт = " + b_TX_2.length + "\n"; ////////////////////////Text_TX > LCD s_7_RX += s_7 + "\n"; ////////////////////////Text_TX > TX try { out_7.write(b_TX_2); } catch (IOException e) { s_7_RX += "Сервер: Ошибка TX (RST)" + "\n"; } ///////////////////////////////////////////////////////////// len_7>0 } //////////////////////////////////////////////////////////////RX таймаут: else{ s_7_RX += "Сервер: RX таймаут 5с" + "\n"; }; //////////////////////////////////////////////////////////////socket.close (FIN) try { server_7.close(); socket_7.close(); } catch (IOException e1) { s_7_RX += "Сервер: Ошибка close" + "\n"; } s_7_RX += "Сервер: (FIN)" + "\n"; s_7_RX += "----------------------------------------------------" + "\n"; //////////////////////////////////////////////////////////////LCD: ta1.setText(s_7_RX); // > TextArea ////////////////////////////////////////////////////////////// } } }); Thready_5.start(); // start поток 5 //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////поток 6 TCP Клиент: Thread Thready_6 = new Thread(new Runnable() { public void run() // поток 6 { ////////////////////////////////////////////////////////////// while(true) { /////////////////////////////////////////////////////////// /**/ //ждём flag_TCP_Клиент... while(flag_TCP_Клиент == 0) { //останавливает поток на ms. try {Thread.sleep(1000);} // CPU ! catch (InterruptedException e8) {} }; /////////////////////////////////////////////////////////// сокет: flag_error_8 = 0; // сброс flag_error_3 s_8_RX = "----------------------------------------------------" + "\n"; /////////////////////////////////////////////////////////// TX: IP_LAN_WAN: //"192.168.0.101";//> SYN //"ya.ru";//> DNS IP_LAN_WAN_8 = "192.168.0.101"; // LAN /////////////////////////////////////////////////////////// TX: порт: int port_8 = 80; //Создаем сокет s_8_RX += "Клиент: (SYN)" + " Host: " + IP_LAN_WAN_8 + ", port: " + port_8 + "\n";//15c Socket socket_8 = null; try { socket_8 = new Socket(IP_LAN_WAN_8, port_8);//IP_8 } catch (UnknownHostException e) { flag_error_8 = 1; s_8_RX += "Клиент: Ошибка (DNS) (Неизвестный Host)" + "\n"; } catch (IOException e) { flag_error_8 = 1; s_8_RX += "Клиент: Ошибка (SYN) (Host не отвечает)" + "\n"; } if (flag_error_8 == 0){ // 1 -ошибка сокет /////////////////////////////////////////////////////////// поток: //создаём поток ввода/вывода InputStream in_8 = null; OutputStream out_8 = null; try { in_8 = socket_8.getInputStream(); out_8 = socket_8.getOutputStream(); } catch (IOException e) { s_8_RX += "Клиент: Ошибка потока" + "\n"; } //////////////////////////////////////////////////////////IP, порт: //Local_IP, Local_порт s_8_RX += "Клиент: " + socket_8.getLocalAddress() + ":" + socket_8.getLocalPort(); //Inet_IP, Inet_порт s_8_RX += " >> " + socket_8.getInetAddress() + ":" + socket_8.getPort() + "\n"; //////////////////////////////////////////////////////////система: TX s_8_TX = "GET /"; // s_8_TX += " HTTP/1.1\r\n"; // //////////////////////////////////////////////////////////TX TCP: ////////////////////////Text_TX > буфер byte[] b_TX_8 = s_8_TX.getBytes(); s_8_RX += "Клиент: TX байт = " + b_TX_8.length + "\n"; ////////////////////////Text_TX > LCD s_8_RX += s_8_TX + "\n"; ////////////////////////Text_TX > TX try { out_8.write(b_TX_8); } catch (IOException e) { s_8_RX += "Ошибка TX" + "\n"; } //////////////////////////////////////////////////////////RX TCP: цикл 5с cikl_8 = 0; // сброс цикл 5с while(cikl_8 < 500)// цикл 5с { //останавливает поток на ms. try {Thread.sleep(10);} // CPU ! catch (InterruptedException e3) {} //проверка приёмного буфера len_8 = 0; // сброс len try { //available() получение количество доступных для чтения байтов потока InputStream len_8 = in_8.available(); } catch (IOException e8) { s_8_RX += "Ошибка available" + "\n"; } //читаем приёмный буфер if (len_8>0){ if (len_8>1500){len_8=1500;}; // Ethernet s_8_RX += "Клиент: RX байт = " + len_8 + "\n";// RX байт > LCD cikl_8=500; // сброс цикл 5с //читаем поток InputStream for (x_8 = 0; x_8 DEC } catch (IOException e) { s_8_RX += "Ошибка read" + "\n"; } } } cikl_8++; // счёт цикл 5с } /////////////////////////////////////////////////////// приёмный буфер len>0: if (len_8>0){ /////////////////////////////////////////////////////// система: RX /////////////////////////////////////////////////////// RX > LCD: s_8_RX += new String(RX_byte_8, 0, len_8) + "\n"; // HEX > String /////////////////////////////////////////////////////// система: } /////////////////////////////////////////////////////// RX таймаут: else{ s_8_RX += "Клиент: RX таймаут 5с" + "\n"; }; /////////////////////////////////////////////////////// socket.close(FIN): try { socket_8.close(); } catch (IOException e8) { s_8_RX += "Ошибка close" + "\n"; } s_8_RX += "Клиент: (FIN)" + "\n"; ///////////////////////////////////////////////////////// ошибка сокет: } s_8_RX += "----------------------------------------------------" + "\n"; /////////////////////////////////////////////////////////// TX END //////////////////////////////////////////////////////////////LCD: ta.setText(s_8_RX); // > TextArea //////////////////////////////////////////////////////////////сброс флаг TCP_Клиент: flag_TCP_Клиент = 0; ////////////////////////////////////////////////////////////// } } }); Thready_6.start(); // start поток 6 //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// } }