8***@qq.com
8***@qq.com
  • 发布:2016-11-01 10:09
  • 更新:2016-11-01 10:09
  • 阅读:3771

udp的发送与接收

分类:HBuilder

需要注意的是:需要用Unicode编码方式
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title></title>
<script type="text/javascript">
var udp;

    document.addEventListener('plusready', function(){  
        //console.log("所有plus api都应该在此事件发生后调用,否则会出现plus is undefined。"  

            udp=new UDP();  
            udp.Listen(5412,function(data){  
                alert("收到:"   data);  
            });  

    });  

function senddata(){  
    udp.Send("192.168.1.197",12345,"a地");  
}  

function UDP(){  
    var DatagramPacket=plus.android.importClass("java.net.DatagramPacket");  
    var DatagramSocket=plus.android.importClass("java.net.DatagramSocket");  
    var InetAddress=plus.android.importClass("java.net.InetAddress");  
    var Addr=new InetAddress();  
    var sock;  
    var _RUNNING=true;  

    this.Listen=function(port,recvcallback){  
        sock=new DatagramSocket(port);  

        var buf=[];  
        buf=Str2Byte("12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890");  
        //buf[1024]=0;  
        sock.setSoTimeout(50);  
        var recvtime=setTimeout(recv(recvcallback),"10");  
        function recv(callback) {  
            var pack=new DatagramPacket(buf,buf.length);  
            try{  
                sock.receive(pack);  
                if (pack.getLength()>0) {          
                    var data=Byte2Str(pack.getData(),pack.getLength());  
                    callback(data);  
                    clearTimeout(recvtime);  
                }  
            }catch(e){  
            }  
            if (_RUNNING) recvtime=setTimeout(recv(callback),"10");  
        }  
    };  

    this.Close=function() {  
        alert("Socket Close");  
        sock.close();     
        _RUNNING=false;  
    };  

    this.Send=function(remote,port,data) {  
        var buf=[];  
        buf=Str2Byte(data);  
        var pack=new DatagramPacket(buf,buf.length,Addr.getByName(remote),port);  
        sock.send(pack);  
    };  
}  

function Byte2Str(arr,length){
var str="";
var d;
for(var i=0;i<length;i =2) {
d=arr[i];
d=(arr[i 1]<<8) d;
var tmp=String.fromCharCode(d);
str =tmp;
}
return str;
}

function Str2Byte(str){  
    var ch,c2,st,re=[];  
    for(var i=0;i<str.length;i  ) {  
        ch=str.charCodeAt(i);  
        st=[];  
        do {  
            c2=ch
0 关注 分享

要回复文章请先登录注册