该应用程序直接将输入的UDP消息转换成TCP流,在这个过程中数据是直接转换的并没有对数据进行任何处理(在0.2.1版本中则有一个可选项,使得开发 者可以在发送数据前在数据包头前添加一个数据包大小前缀,以遵循OSC/TCP规范)。这样就使得一些不支持UDP的程序(比如:flash)能够接受通 过UDP协议发送过来的数据。因为OSC/TUIO通常是通过UDP发送数据的,因此这个程序可以使得flash能够以原始二进制的形式来接受这些消息。
    可以在data/settings.xml文件中进行一些必要的设置
    源代码及可执行程序地址在:http://code.google.com/p/udp-tcp-bridge/
     
     下面是FAQ:
1  此程序和flosc做的事情不一样吗?
答:不一样,flosc只是针对osc的,它负责将输入的数据转换成xml格式,然后通过tcp发送出去,然后flash就可以接收并解析这些xml数 据。这个方法虽然很有创意,但是目前已不是最有效的方式,因为我们知道flash目前已经有一个flash.net.socket’s类(库)使得我们可 以创建一个tcp的socket来接收二值数据(raw binary data)。

2 难道我不能直接在ccv/tbeta中通过tcp发送tuio消息吗?
答:虽然我们可以在ccv/tbeta中直接通过tcp来发送数据,flash也可以直接的监听这些数据,我们也可以就此不再需要中间的通信协议转换程序 了(比如flosc),但是通过tcp发送的数据依旧是xml格式的,而不是原始的、二值的tuio消息(即flash需要从xml中解析出tuio消 息)。因此通过ccv/tbeta发送的数据只是一个包含有tuio数据的xml字符串,根本算不上是纯粹的tuio消息。

3 我如何在flash中接收这些数据?
答:使用flash.net.Socket就可以了,使用方法在adobe的官方帮助上可以找到:
http://livedocs.adobe.com/flex/2/langref/flash/net/Socket.html

4 我可以继续使用NUIGroup的flash touch api吗?
答:可以,但是你需要覆盖一些文件,如果你使用的跟踪器是通过UDP发送tuio数据(几乎所有的跟踪器都以这种方式发送的),并且你使用udp- tcp-brige将数据转换成tcp方式,那么通过tcp发送的数据就是纯粹的tuio数据(不是xml字符串,tuio的消息格式可以详细tuio相 关文档)。因此NUIGroup的flash touchapi 是无法解析它的。值得庆幸的是,在http://www.touchgateway.com/?p=70上有一些可替代的类,这些类负责进行必要的二值数据解析并产生相同的tuio事件(up down move等),因此除了解析数据部分外你可以使用NUIGroup中其它部分的touch api。你也可以修改/重写zip文件中的那些as3文件,这样你就可以将多点触摸flash程序无缝的集成进来。

编译源码:
这个应用程序在openframework 006下完成,使用了以下附加组件:
?ofxNetwork
?ofxThread
?ofxXMLSettings

下面内容值得提及一下:
flosc: 一个java应用程序,将通过UDP发送过来的OSC消息转换成xml数据并通过tcp发送出去
oscar:native max osx应用程序,做的工作同flosc类似(osc(UDP)->xml(TCP))
toxy :本地的windows/linux应用程序,据我所知是将输入的tuio数据按照预定的二进制格式转换成tcp流
touchgateway:java应用程序,将所有输入的UDP转换成TCP。和我的udp-tcp-bridge做的工作相同,只不过是用java写的。

    博视界科技专注于沉浸式全景数字餐厅、全息酒店宴会厅,旨在帮传统餐饮用科技玩跨界,欢迎咨询!

官方网站:www.boseetech.com

联系方式:    

微信联系我:


    【声明】转载本文请注明出处三人行设计,并保留有效链接:一个跨平台的开源的UDP-TCP桥 http://www.srxtuan.com/archives/779,谢谢!