wsock.udp的使用

By admin at 2018-03-21 • 0人收藏 • 227人看过

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
2018-03-21   #1

第二种方法: 利用线程来循环接收数据, 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();

这个的好处是处理代码都在其他线程里,不会对界面线程进行干扰

登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
Htmlayout皮肤Htmlayout皮肤引擎介绍
黑猫Aar教程网:简码编程
C大Aardio论坛:Aar爱好者论坛
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...