Advertisement
Guest User

Untitled

a guest
Jan 12th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.52 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement