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...

      package com.chy.socket;
      import java.io.IOException;
      import java.net.DatagramPacket;
      import java.net.DatagramSocket;
      import java.net.SocketException;
      import com.chy.global.GlobalValue;
      public class UdpClient {
     	private boolean isStop = false;
     	private DatagramSocket datagramSocket = null;
     	private onReceiveListener onReceiveListener = null;
     	private ReadThread readThread = null;
     	public interface onReceiveListener {
     		public void onReceive(DatagramPacket packet);
      	}
     	class ReadThread extends Thread {
     		@Override
     		public void run() {
     			byte[] buffer = new byte[GlobalValue.READ_BLOCK_SIZE];
     			DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
     			while (!isStop && !isInterrupted()) {
     				try {
      					datagramSocket.receive(packet);
     					if (onReceiveListener != null) {
      						onReceiveListener.onReceive(packet);
      					}
      				} catch (IOException ex) {
      					ex.printStackTrace();
      				}
      			}
      		}
      	}
     	public UdpClient(int port, onReceiveListener onReceiveListener) {
     		try {
      			datagramSocket = new DatagramSocket(port);
      		} catch (SocketException ex) {
      			ex.printStackTrace();
      		}
     		if (datagramSocket == null) {
     			return;
      		}
     		this.onReceiveListener = onReceiveListener;
      		readThread = new ReadThread();
      		readThread.start();
      	}
     	public synchronized boolean send(byte[] buffer) {
     		boolean result = false;
     		if(datagramSocket != null) {
     			DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
     			try {
      				datagramSocket.send(packet);
      				result = true;
      			} catch (IOException ex) {
      				ex.printStackTrace();
      			}
      		}
     		return result;
      	}
     	public void close() {
      		isStop = true;
     		if(readThread != null && !readThread.isInterrupted()) {
      			readThread.interrupt();
      			readThread = null;
      		}
     		if (datagramSocket != null) {
      			datagramSocket.close();
      		}
      	}
      }
  
 

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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