wsock.udp的使用
By
admin
at 2018-03-21 • 0人收藏 • 1369人看过
udp和串口类似,这个利用网络协议.
发送暂且不说, 接收可以采用两种办法:
1,采用asynClient异步客户端 , 这样可以在界面线程中通过消息来操作
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add()
/*}}*/
import console
//异步客户端
import wsock.udp.asynClient;
console.open()
var udpClient = wsock.udp.asynClient()
//绑定监听事件
if( !udpClient.bind( "127.0.0.1",50 ) ){
udpClient.close();
console.log("未监听成功");
console.pause();
return false;
}
//异步客户端好处就是可以在程序中直接利用receve函数获取接收到的数据
udpClient.onReceive = function(err){
var str = udpClient.recvfrom(1024);
console.log("服务器收到:",str)
}
winform.show()
win.loopMessage();这个的好处就是: 只要有数据被监听到, 那么就立即进入onReceve()函数执行, 我们可以在这个函数里做文章..
1 个回复 | 最后更新于 2018-03-21
登录后方可回帖
第二种方法: 利用线程来循环接收数据, udpServer.recvfrom(1024);这个函数里面用了多次自调用,所以可以认为是阻塞式接收吧, 当有接收到数据,才能执行后面的代码
import win.ui; /*DSG{{*/ var winform = win.form(text="aardio form";right=759;bottom=469) winform.add() /*}}*/ import console import wsock.udp.client; console.open() var udpClient = wsock.udp.client(); thread.invoke( function( ){ import console; import wsock.udp.client; udpServer = wsock.udp.client(); //调用bind()将该套接口和 本地网络地址联系在一起 if( !udpServer.bind( "127.0.0.1",50 ) ){ udpServer.close(); console.log("未监听成功"); console.pause(); return false; } while(1){ var str = udpServer.recvfrom(1024); console.log("服务器收到:",str) } } ) winform.show() win.loopMessage();这个的好处是处理代码都在其他线程里,不会对界面线程进行干扰