daily pastebin goal
83%
SHARE
TWEET

Untitled

a guest Jan 12th, 2018 75 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public class MainActivity extends AppCompatActivity {
  2.  
  3.     Button im, ex;
  4.     String myIp;
  5.     ServerSocket server=null;
  6.     Socket socket = null;
  7.     WifiManager wifi;
  8.     Server s=null;
  9.     mySocket ms;
  10.     String [] one = {"Привет, ", "Здравствуй, "};
  11.     String [] two = {"я ", "это ", "на связи "};
  12.     String [] three = {"сокет.", "клиент."};
  13.     Random random;
  14.     String msg;
  15.     int who;
  16.     Socket client=null;
  17.     @Override
  18.     protected void onCreate(Bundle savedInstanceState) {
  19.         super.onCreate(savedInstanceState);
  20.         setContentView(R.layout.activity_main);
  21.         ex=findViewById(R.id.ex);
  22.         im=findViewById(R.id.im);
  23.         random=new Random();
  24.         ex.setOnClickListener(new View.OnClickListener() {
  25.             @Override
  26.             public void onClick(View view) {
  27.                 //startActivity(new Intent(MainActivity.this, ExportActivity.class));
  28.                 WifiManager wifi = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
  29.                 Log.d("Tag", getIPAddress() + "");
  30.                 who=random.nextInt(2);
  31.                 msg = one[random.nextInt(2)] + two[random.nextInt(3)] + three[who];
  32.                 ms = new mySocket();
  33.                 ms.start();
  34.                 new Timer().schedule(new TimerTask() {
  35.                     @Override
  36.                     public void run() {
  37.                         runOnUiThread(new Runnable() {
  38.                             @Override
  39.                             public void run() {
  40.                                 if (ms.isAlive()) {
  41.                                     ex.setEnabled(false);
  42.                                 } else {
  43.                                     ex.setEnabled(true);
  44.                                 }
  45.                             }
  46.                         });
  47.                     }
  48.                 }, 0, 10);
  49.             }
  50.         });
  51.         im.setOnClickListener(new View.OnClickListener() {
  52.             @Override
  53.             public void onClick(View view) {
  54.                 //startActivity(new Intent(MainActivity.this, ImportActivity.class))
  55.                 s=new Server();
  56.                 s.start();
  57.                 new Timer().schedule(new TimerTask() {
  58.                     @Override
  59.                     public void run() {
  60.                         runOnUiThread(new Runnable() {
  61.                             @Override
  62.                             public void run() {
  63.                                 if(s.isAlive()){
  64.                                     im.setEnabled(false);
  65.                                 }
  66.                                 else {
  67.                                     im.setEnabled(true);
  68.                                 }
  69.                             }
  70.                         });
  71.                     }
  72.                 },0, 10);
  73.  
  74.             }
  75.         });
  76.     }
  77.     public InetAddress getWifiApIpAddress() {
  78.         int i=0;
  79.         try {
  80.             for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en
  81.                     .hasMoreElements();) {
  82.                 NetworkInterface intf = en.nextElement();
  83.                 if (intf.getName().contains("wlan")) {
  84.                     for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr
  85.                             .hasMoreElements();) {
  86.                         InetAddress inetAddress = enumIpAddr.nextElement();
  87.                         if (!inetAddress.isLoopbackAddress() &&
  88.                                 (inetAddress.getAddress().length == 4)) {
  89.                             Log.d("", inetAddress.getHostAddress());
  90.                             return inetAddress;
  91.                         }
  92.                         else{
  93.                             Log.d("", inetAddress.getHostAddress());
  94.                         }
  95.                     }
  96.                 }
  97.             }
  98.         } catch (SocketException ex) {
  99.             Log.e("", ex.toString());
  100.         }
  101.         return null;
  102.     }
  103.  
  104.     public String getIPAddress() {
  105.         wifi=(WifiManager)getApplicationContext().getSystemService(WIFI_SERVICE);
  106.         int ip = wifi.getDhcpInfo().gateway;
  107.  
  108.         String ipString = String.format("%d.%d.%d.%d", (ip & 0xff),
  109.                 (ip >> 8 & 0xff), (ip >> 16 & 0xff), (ip >> 24 & 0xff));
  110.         return ipString;
  111.     }
  112.     public class Server extends Thread {
  113.         // Конструктор
  114.         Server() {
  115.             // Создаём новый поток
  116.             super("Второй поток");
  117.             Log.i("", "Создан второй поток " + this);
  118.         }
  119.  
  120.         public void run() {
  121.             String myIp = getWifiApIpAddress().getHostName();
  122.             Log.i("TAG", myIp+"");
  123.             try {
  124.                 if(server==null) {
  125.                     server = new ServerSocket(1234, 0, getWifiApIpAddress());
  126.                 }
  127.                 client = server.accept();
  128.  
  129.                 InputStream sin = client.getInputStream();
  130.                 OutputStream sout = client.getOutputStream();
  131.                 DataInputStream in = new DataInputStream(sin);
  132.                 DataOutputStream out = new DataOutputStream(sout);
  133.                 Log.e("Tag", "Сокет подключился");
  134.  
  135.                 String line = null;
  136.                 line = in.readUTF(); // ожидаем пока клиент пришлет строку текста.
  137.                 System.out.println("Сообщение от клиента: " + "'" + line + "'");
  138.                 System.out.println("Отвечаю на сообщение...");
  139.                 out.writeUTF("Привет, " + three[who]); // отсылаем клиенту обратно ту самую строку текста.
  140.                 out.flush(); // заставляем поток закончить передачу данных.
  141.                 System.out.println("Ожидание...");
  142.                 System.out.println();
  143.             } catch (SocketException e) {
  144.                 Log.e("Tag1", e.getCause()+", " +e);
  145.             } catch (IOException e) {
  146.                 Log.e("Tag2", e.getCause()+", " +e);
  147.                 e.printStackTrace();
  148.             }
  149.         }
  150.     }
  151.     public class mySocket extends Thread {
  152.         // Конструктор
  153.         mySocket() {
  154.             // Создаём новый поток
  155.             super("Поток2");
  156.             Log.i("TAG", "Поток2" + this);
  157.         }
  158.  
  159.         public void run() {
  160.             try {
  161.                 socket = new Socket(getIPAddress(), 1234);
  162.  
  163.                 InputStream sin = socket.getInputStream();
  164.                 OutputStream sout = socket.getOutputStream();
  165.                 DataInputStream in = new DataInputStream(sin);
  166.                 DataOutputStream out = new DataOutputStream(sout);
  167.  
  168.                 System.out.println("Отправка сообщения серверу...");
  169.                 out.writeUTF(msg); // отсылаем введенную строку текста серверу.
  170.                 out.flush(); // заставляем поток закончить передачу данных.
  171.                 msg = in.readUTF(); // ждем пока сервер отошлет строку текста.
  172.                 System.out.println("Ответ сервера: " + msg);
  173.                 System.out.println("Можете отправить сообщение снова");
  174.  
  175.             } catch (IOException e) {
  176.                 Log.e("Tag", e.getCause()+", " +e);
  177.             }
  178.         }
  179.     }
  180. }
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