Android UDP

原创 2016年06月02日 00:04:23
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();
		}
	}
}

版权声明:转载请注明出处——http://blog.csdn.net/chy555chy/article

相关文章推荐

PC和Android模拟器访问及模拟器之间tcp/udp通信

Android系统默认只能通过IP(10.0.2.2)单向访问PC电脑,而PC电脑不能通过IP来直接访问Android模拟器系统。要想实现PC电脑和Android模拟器系统以及Android模拟器之间...

android udp

  • 2014年04月02日 13:59
  • 251KB
  • 下载

android udp与pc端通信实例

udp通信还是必备知识的,最近花时间去调通了一个例子程序,还不错。包括android程序以及网络调试助手。pc的网络调试助手稂莠不齐,不好弄。我推荐一个网络调试助手。名字就叫网络调试助手,英文名称Ne...

Android UDP通信库下载

  • 2017年02月16日 15:39
  • 57.21MB
  • 下载

android局域网udp广播demo

  • 2012年08月11日 15:16
  • 105KB
  • 下载

android开发第四弹--网络编程之socket tcp/ip udp http(一)

一.网络编程的前提 1.需要的权限 访问网络的Android应用都必须加上访问互联网的权限: android.permission.INTERNET 2.开启子线程执行网络或者耗时的操作 原...

Android UDP通讯工具

  • 2012年11月07日 11:47
  • 68KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android UDP
举报原因:
原因补充:

(最多只允许输入30个字)