android UDP通信

Android UDP通信很简单的,调用下面这个方法就可以实现客户端和服务端的UDP通信,

只需要把要发给服务器的数据转成一个byte数组格式传进去就行了。

/**客户端向服务器端发送UDP数据*/
public static void sendUdpData(final byte[] bytesToSend) {
    new Thread(){
        @Override
        public void run() {
            try{
                //IP是服务器地址
                InetAddress serverAddress = InetAddress.getByName(IP);

                //PORT是服务器端口号
                int serverPort = PORT;

                DatagramSocket socket = new DatagramSocket();
                socket.setSoTimeout(8000);

                //sendPacket发送的数据包
                DatagramPacket sendPacket = new DatagramPacket(bytesToSend,bytesToSend.length,serverAddress,serverPort);
                //receivePacket返回的数据包
                DatagramPacket receivePacket = new DatagramPacket(new byte[bytesToSend.length],bytesToSend.length);

                int tries = 0;
                boolean receivedResponse = false;
                do{
                    socket.send(sendPacket);
                    try{
                        socket.receive(receivePacket);
                        if(!receivePacket.getAddress().equals(serverAddress)){
                            throw new IOException("接收到未知来源的包");
                        }
                        receivedResponse = true;
                    }catch(InterruptedIOException e){
                        tries +=1;
                        Log.i("TAG","Received:"+"Time out,"+(5-tries));
                    }
                }while((!receivedResponse)&&(tries > 5));

                if(receivedResponse){
                    //在这里可以拿到服务器返回的数据
                    String receiveData=new String(receivePacket.getData());
                    Log.i("TAG","返回数据:"+receiveData);
                }else{
                    Log.i("TAG","NO response -- giving up");
                }
                socket.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }.start();
}
时间: 2024-08-09 02:20:26

android UDP通信的相关文章

android udp通信(应用层与底层硬件的通信)

背景:最近项目用到一块工控板,板子硬件与上位机通过udp方式进行通信,但厂家只提供了c#的demo,并将相应的驱动命令封装为dll动态库.另一项目小组希望在android平台下也能驱动这块工控板,我之前写过一些底层的驱动,但都收通过串口来传输的,通过网络进行数据通信的还是头一次接触.简单地看了下硬件的通信协议,还好,不算很复杂,每条命令只有20个字节.于是开始了解在android下如何实现Udp通信,现积累如下. what? 字面意思:UDP的全称是 User Datagram Protocol

Android UDP通信的成败判断

最近在 Android 开发的时候遇到一个问题,就是在服务器与客户端采用UDP协议通信的时候,如何判断一开始双方建立了连接. "连接建立"很容易实现,服务器受到命令,返回类似ACK等信息,客户端使用 DatagramSocket.receive() 方法接收信息,即可知道双方已完成一次交互,通信成功.而要判断"连接失败",即客户端在 DatagramSocket.receive() 这一步就会产生阻塞. 想了两个解决方法,一是设计一个定时器,规定 DatagramS

Android 之简单UDP通信

一 Android UDP通信编程步骤 服务器端: 1.建立Socket 2.监听端口  3.接收数据  4.实现数据发送 客户端:直接实现数据发送即可 二 代码,实现一个简单的UdpHelper类 1 package com.br.delphi.centercontrol; 2 3 import android.os.Handler; 4 import android.os.Message; 5 import android.util.Log; 6 7 import java.io.IOExc

【Android开发—智能家居系列】(四):UDP通信发送指令

思路回顾 [1]手机连接WIFI模块 [2]UDP通信对WIFI模块发送指令,以和WIFI模块保持连接状态 [3]UDP通信对WIFI模块发送指令,让其搜索可用的无线网,返回WIFI列表 [4]发送指令,让WIFI模块接入指定路由 [5]手机连接路由 [6]发送指令,获得WIFI模块的动态IP地址 UDP通信线程类 package com.jczb.smartlife.common; import java.io.IOException; import java.net.DatagramPack

UDP通信

UDP通信的实体都是对等的. Server可以绑定端口,client实际上也可以绑定端口,如果不绑定端口,系统给socket随机关联一个端口. Client也可以通过Connect建立和server的连接. 例如: client绑定1900,server绑定1500 udp 0 0 0.0.0.0:1500 0.0.0.0:* udp 0 0 127.0.0.1:1900 127.0.0.1:1500 ESTABLISHED

wince 6.0下UDP通信需要注意MAC地址

最近在wince6.0下进行网络通信,在ARM下使用UDP通信协议.当然了,首先按照自己的使用配置wince中的IP,修改注册表即可. 我是wince的菜鸟,但是绝不是使用UDP通信的新手,在windows下跑过多次的UDP发送端和接收端,在wince下却怎么都不能像在windows下使用那么顺利,出现了不可理解的现象: (1)wince和wince相互通信,发送成功了,可是接收端却没有收到数据包: (2)wince和windows相互通信,发送和接收都正常: (3)wince和windows互

HP-SOCKET TCP/UDP通信框架库解析

项目概述: HP-SOCKET是一套通用TCP/UDP通信框架,包括服务器.客户端.Agent组件:其目标是提供高性能.通用性.简易性.可扩展.可定制: 鉴于此,其仅实现基本的通用框架通信.数据收发功能,供上层应用直接简单使用的接口实现:而对于数据包完整性和协议解析等未处理, 也就意味着需要应用层自己处理一些数据包构造或解析等操作: 事实上目前只能支持windows平台: 1. 对于TCP通信模式下:服务器端和Agent均采用的是异步IO模型中的完成端口模型,客户端采用的是就绪IO通告模型中的W

JAVA网络编程--UDP通信

首先网络传输数据需了解例如以下三点 1.找到对方IP 2.数据要发送到对方指定的应用程序上,为了标识这些应用程序,所以给这些网络应用程序用数字进行了标识.为了方便称呼这个数字,叫做port,逻辑port 3.  定义通信规则.这个通信规则称为协议. 国际组织定义了通用协议TCP/IP. 127.0.0.1本机回环地址 不易记忆,可用主机名 主机名:localhost 0-65535port范围 0-1024系统使用或保留port .当中mysql的port号为 3306 一.UDP UDP相对于

qt在windows下的udp通信(最简单)

qt编程:windows下的udp通信 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:win7 开发环境:qt 功能: 用udp进行收发通信 界面: 源代码: LssHost.pro: [cpp] view plain copy #------------------------------------------------- # # Project created by QtCreator 2013-09-22T09:36:44