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<LH1_L; xIP++) {   //   
//(char)возвращает строковое представление переданного аргумента.
LH1_IP += (char)bufer_LH[xIP];         
};
///////////////////////////////////////////////////////////////////////////
//IP LocalHost String > 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_7<len_7; x_7++){ 
try 
{
RX_byte_7[x_7] = (byte) in_7.read(); 
} catch (IOException e) {
s_7_RX += "Сервер: Ошибка read" + "\n";
}
};  
};
////////////////////////////////////////////////////////////////цикл 5с
cikl_7++; // счёт цикл 5с
}
/////////////////////////////////////////////////// приёмный буфер len_7:         
if (len_7>0){ 
/////////////////////////////////////////////////////////////// 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\nContent-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 += 
"<!DOCTYPE html>" +
"<html><head><title>Master_0</title></head><body>" +
//"<!---------------------------------------обои------------------------------------------>" +
"<div  id='fon_pult' style='position: absolute; left: 0px; top: 0px; width: 980px; height: 1500px;" + //
"background: #DEB887;'onmousemove = 'mousemove();'>" +

//"<!------------------------------- Data ползунок 1,2 ------------------------------------>" +
"<input id='range_1_Data' type='text' value='127'" +
"style='position: absolute; left: 0px; top: 50px; width: 970px; height: 150px; font-size: 120px;" +
"border: 4px solid maroon; background: #4169E1;'>" + 
"<input id='range_2_Data' type='text' value='127'" +
"style='position: absolute; left: 0px; top: 450px; width: 970px; height: 150px; font-size: 120px;" +
"border: 4px solid maroon; background: #4169E1;'>" + 
//"<!------------------------------- ползунок 1,2 ----------------------------------------->" +
"<div  id='fon_Polzunok1' style='position: absolute; left: 0px; top: 100px; width: 972px; height: 150px;'>" +
"<input id='range_1' type='range' min='0' max='255' step='1' oninput='Polzunok1()' value='127'" +
"style='position: absolute; left: 0px; top: 100px; width: 972px; height: 250px;' >" +
"</div>" +
"<div  id='fon_Polzunok1' style='position: absolute; left: 0px; top: 500px; width: 972px; height: 150px;'>" +
"<input id='range_2' type='range' min='0' max='255' step='1' oninput='Polzunok2()' value='127'" +
"style='position: absolute; left: 0px; top: 100px; width: 972px; height: 250px;' >" +
"</div>" +
//<!-------------------------------------button Taimer_ON ---------------------------------->
"<input id='Taimer_ON' type='button' value='Taimer_ON' onClick='ClickTaimer_ON();'" +
"style='position: absolute; left: 0px; top: 900px;  width: 972px; height: 150px; font-size: 120px;" +
"border: 4px solid maroon;'>" +
//<!-------------------------------------button Taimer_OFF --------------------------------->
"<input id='Taimer_OFF' type='button' value='Taimer_OFF' onClick='ClickTaimer_OFF();'" +
"style='position: absolute; left: 0px; top: 1100px;  width: 972px; height: 150px; font-size: 120px;" +
"border: 4px solid maroon;'>" +


"<script>" +
////////////////////////////////////////счёт  
"var x = 0;" +
"var x1 = 0;" +
////////////////////////////////////////bufer_TX[32]   
"var bufer_TX = [0,0,0,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];" +
////////////////////////////////////////String '...'
"var mas_TX = []; mas_TX[0] = '|';" +
////////////////////////////////////////счётчик пакетов
"var st_paket = 0;" +
////////////////////////////////////////


/////////////////////////////////////////////////////////// 0b00000001 > String '001' 
"function abc(x){" +
"if (x > 99) {x = String(x);}" +
"else {" +
"if (x > 9){x = '0' + String(x);}" +
"else      {x = '0' + '0' + String(x);};" +
"};" +
"return x;" +
"}" +
//////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////Ползунок 1,2:
"function Polzunok1()" +
"{" +
"document.getElementById('range_1_Data').value = document.getElementById('range_1').value;" +
"bufer_TX[3] = document.getElementById('range_1').value;" +  
"}" +
"function Polzunok2() " +
"{" +
"document.getElementById('range_2_Data').value = document.getElementById('range_2').value;" +
"bufer_TX[5] = document.getElementById('range_2').value;" +
"}" +
//////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////Таймер ON:
"var timerId = 0;" +
"function ClickTaimer_ON()" +
"{" +
"timerId = setInterval(function() {" +
////////////////////////////////////////////////////////////счётчик пакетов
"st_paket++;" +  
"if (st_paket == 256) {st_paket = 0};" +
"bufer_TX[0] = st_paket;" +

"document.getElementById('Taimer_ON').value = st_paket;" +

////////////////////////////////////////////////////////////
//////////////////////0b00000001 > String '001' 
"for(x=0; x<32; x++) {" +
"mas_TX[x] = abc(bufer_TX[x]);" +
"}" +
//////////////////////String '001,001...' > String '001001...' 
"for(x=1; x<32; x++) {" +
"mas_TX[0] += mas_TX[x];" +
"}" +
//////////////////////AJAX_TX: 
"var req = new XMLHttpRequest();" +
//"req.open('GET', ( 'http://192.168.0.101/?' + mas_TX[0]));" + // адрес + Data
"req.open('GET', ( 'http://" + IP_LAN + "/?' + mas_TX[0]));" +  // адрес + Data 
"req.send(null);" + // (для GET -null) 
//////////////////////
"}," +
"100);" +  // mc
"}" +
////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////Таймер_OFF:
"function ClickTaimer_OFF()" +
"{" +
"clearInterval(timerId);" +
"}" +
////////////////////////////////////////////////////////////////////////////////////
"</script>" +
"<!-- fon_pult -->" +
"</div></body></html>";


}//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<len_8; x_8++){ 
try {
RX_byte_8[x_8] = (byte) in_8.read(); // HEX > 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
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
}
}

