wsock.udp的使用

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

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();

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

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...