如何使用Haxe / CPP处理Socket

时间:2015-09-15 16:03:14

标签: sockets haxe

我正在尝试与服务器创建基于套接字的通信,Haxe客户端以CPP为目标。

我正在看sys.net.Socket看起来像我想要的,但每个方法都是同步的!我该如何等待服务器事件?

我习惯使用.on()函数定位语法,这里有没有相应的东西?

由于

2 个答案:

答案 0 :(得分:2)

历史上hxcpp和async是一项艰巨的任务,因为没有开箱即用的hxcpp主循环,所以任务实际上总是推迟到工具包(openfl,nme等......)

AFAIK没有开箱即用的解决方案,绑定http://zeromq.org/可能是一个简单明了的任务。

您还可以推荐使用您喜欢的工具包装箱的HTTP实施。

祝你好运!

答案 1 :(得分:2)

haxe / cpp中有两种可能的非阻塞套接字访问解决方案:

1)将套接字设置为非阻塞

使用Socket.setBlocking方法设置套接字的阻塞行为。如果设置为true,这是默认设置,socket.accept()(可能socket.read()但我未经过亲自测试的方法)将会阻止,直到完成为止。

但是如果你将阻止设置为false,那么如果没有数据可用,那么这些函数将会抛出(你需要捕获并继续前进。)因此,在你的主循环中你可以访问你的非阻塞在read()调用周围使用try / catch的套接字。

2)将套接字放在主循环的单独线程中

您可以轻松地为套接字通信创建单独的Thread,因此阻塞套接字就可以了。在此模型中,套接字线程将使用Thread.sendMessage()将数据发送回主线程,您的主循环将通过Thread.readMessage(block:Bool)检查套接字中是否有新数据。