Android UDP

举报
福州司马懿 发表于 2021/11/19 04:17:04 2021/11/19
【摘要】 package com.chy.socket; import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.SocketException; import com.chy.global.G...

  
  1. package com.chy.socket;
  2. import java.io.IOException;
  3. import java.net.DatagramPacket;
  4. import java.net.DatagramSocket;
  5. import java.net.SocketException;
  6. import com.chy.global.GlobalValue;
  7. public class UdpClient {
  8. private boolean isStop = false;
  9. private DatagramSocket datagramSocket = null;
  10. private onReceiveListener onReceiveListener = null;
  11. private ReadThread readThread = null;
  12. public interface onReceiveListener {
  13. public void onReceive(DatagramPacket packet);
  14. }
  15. class ReadThread extends Thread {
  16. @Override
  17. public void run() {
  18. byte[] buffer = new byte[GlobalValue.READ_BLOCK_SIZE];
  19. DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
  20. while (!isStop && !isInterrupted()) {
  21. try {
  22. datagramSocket.receive(packet);
  23. if (onReceiveListener != null) {
  24. onReceiveListener.onReceive(packet);
  25. }
  26. } catch (IOException ex) {
  27. ex.printStackTrace();
  28. }
  29. }
  30. }
  31. }
  32. public UdpClient(int port, onReceiveListener onReceiveListener) {
  33. try {
  34. datagramSocket = new DatagramSocket(port);
  35. } catch (SocketException ex) {
  36. ex.printStackTrace();
  37. }
  38. if (datagramSocket == null) {
  39. return;
  40. }
  41. this.onReceiveListener = onReceiveListener;
  42. readThread = new ReadThread();
  43. readThread.start();
  44. }
  45. public synchronized boolean send(byte[] buffer) {
  46. boolean result = false;
  47. if(datagramSocket != null) {
  48. DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
  49. try {
  50. datagramSocket.send(packet);
  51. result = true;
  52. } catch (IOException ex) {
  53. ex.printStackTrace();
  54. }
  55. }
  56. return result;
  57. }
  58. public void close() {
  59. isStop = true;
  60. if(readThread != null && !readThread.isInterrupted()) {
  61. readThread.interrupt();
  62. readThread = null;
  63. }
  64. if (datagramSocket != null) {
  65. datagramSocket.close();
  66. }
  67. }
  68. }

文章来源: blog.csdn.net,作者:福州-司马懿,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/chy555chy/article/details/51560186

推荐

华为开发者空间发布

让每位开发者拥有一台云主机

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。