Flex AS3与Java Socket通信实现详解

5星 · 超过95%的资源 需积分: 9 26 下载量 124 浏览量 更新于2024-09-18 收藏 104KB DOC 举报
"Flex_AS3与Java Socket通信" 在IT领域,Flex AS3和Java Socket通信是一种常见的客户端-服务器交互方式,特别是在开发富互联网应用程序(RIA)时。Flash Player中的Flex AS3提供了与后端服务器进行低级数据传输的能力,而Java Socket是用于网络通信的标准API,两者结合可以实现高效、实时的数据交换。 首先,让我们深入了解一下Flex AS3。Flex是一个开源框架,用于构建RIA,它基于ActionScript 3,一个强大的面向对象的编程语言。在AS3中,我们可以创建丰富的用户界面并与服务器进行通信。Socket类是AS3提供的网络通信工具,允许我们建立TCP连接并直接发送和接收二进制或文本数据。 在给定的代码示例中,我们看到如何在Flex AS3中创建一个简单的Socket通信应用: 1. 首先,创建一个新的Flash文件`SocketExample.fla`,并在舞台上添加一个按钮`btnSend`。 2. 修改文档类为`SocketExample`,这将作为主程序的入口点。 3. 在`SocketExample.as`文件中,定义了一个名为`SocketExample`的类,继承自`Sprite`,这是AS3中的基本显示对象容器。 4. 定义了一个私有变量`socket`,它是`Socket`类的实例,用于与Java Socket服务器通信。 5. `Socket`对象添加了两个事件监听器:`Event.CONNECT`用于在连接建立时触发,`ProgressEvent.SOCKET_DATA`则在接收到服务器数据时触发。 6. 按钮`btnSend`的点击事件被监听,当点击时调用`sendData`函数,该函数检查Socket是否已连接,如果连接成功,则向服务器发送数据。 Java Socket方面,通常会有一个服务器端程序监听特定端口,等待客户端连接。一旦连接建立,服务器可以读取客户端发送的数据,并相应地发送回数据。这个过程在Java中可以通过`ServerSocket`和`Socket`类来实现。服务器端代码通常会创建一个`ServerSocket`实例,指定一个端口号,然后在`accept()`方法上阻塞,等待客户端的连接请求。一旦客户端连接,服务器端会创建一个`Socket`实例来处理这个连接。 在Flex AS3中发送数据时,会调用`Socket`的`writeUTF()`或`writeBytes()`方法,然后使用`send()`方法将数据发送到服务器。服务器端通过`Socket`的输入流读取这些数据。 Flex AS3与Java Socket通信是通过TCP/IP协议建立安全可靠的连接,实现双向数据传输。这种技术广泛应用于在线游戏、实时聊天应用、股票交易系统等需要实时数据交互的场景。理解并掌握这种通信方式对于开发跨平台的网络应用至关重要。

以hive的角度检查语法: with cur_dim_comb as (SELECT DISTINCT t.dim_comb ,t.var_sub_class ,t.acc_value FROM gerp.cux_cst_data_alloc_his t WHERE t.top_var_type = '10' AND t.job_ver_id in (SELECT ver.job_ver_id AS p_job_ver_id FROM gerp.cux_cst_dist_jobs_all job INNER JOIN gerp.cux_cst_dist_jobs_vers_all ver ON job.job_id = ver.job_id )) select tp.bd_code --事业部编码 ,tp.bd_name --事业部名称 ,hp.ou_code --OU名称 ,hp.ou_name --OU编码 ,op.main_class_desc --差异大类 ,op.acc_value --科目代码 ,op.acc_desc --科目名称 ,op.dim_comb --区分维度 ,op.begin_amount --期初余额 ,op.accrual_amount --本期发生 ,op.balance_diff_alloc_amount --期末差异结存 ,op.var_sub_class ,op.main_class_value ,op.org_id ,op.period_name ,op.job_ver_id from (select up.* ,q1.* from (SELECT DISTINCT maincl.* ,t.* FROM t inner join (SELECT fv.flex_value ,fv.description FROM fv inner join fs on fv.flex_value_set_id = fs.flex_value_set_id AND fs.flex_value_set_name = 'CUX_CST_VARIANCE_TYPE' AND fv.enabled_flag = 'Y' AND fv.hierarchy_level = '2' AND fv.flex_value LIKE '10%' ) maincl on t.var_main_class = maincl.flex_value inner join cur_dim_comb on cur_dim_comb.var_sub_class = t.var_sub_class and cur_dim_comb.acc_value = t.acc_value WHERE 1 = 1 AND t.top_var_type = '10' AND t.job_ver_id in (SELECT ver.job_ver_id AS p_job_ver_id FROM gerp.cux_cst_dist_jobs_all job INNER JOIN gerp.cux_cst_dist_jobs_vers_all ver ON job.job_id = ver.job_id) ORDER BY maincl.description ,t.acc_value ,cur_dim_comb.dim_comb ) up inner join (SELECT t1.* ,SUM(t1.begin_amount) begin_amount ,SUM(t1.accrual_amount) accrual_amount ,SUM(t1.balance_diff_alloc_amount) balance_diff_alloc_amount FROM gerp.cux_cst_data_alloc_his t1 LEFT JOIN gerp.cux_cst_data_alloc_his t ON t1.top_var_type = '10' AND t1.var_sub_class = t.var_sub_class --p_var_sub_class AND t1.org_id = t.org_id --p_org_id AND t1.period_name = t.period_name --p_period_name AND t1.job_ver_id = t.job_ver_id --p_job_ver_id AND t1.acc_value = t.acc_value --p_acc_value WHERE t1.dim_comb in (select distinct dim_comb from cur_dim_comb) group by t1.org_id,t1.period_name,t1.job_ver_id,t1.var_sub_class,t1.acc_value ) q1 on q1.org_id = up.org_id --p_org_id AND q1.period_name = up.period_name --p_period_name AND q1.job_ver_id = up.job_ver_id --p_job_ver_id AND q1.var_sub_class = up.var_sub_class --p_var_sub_class AND q1.acc_value = up.acc_value --p_acc_value ) op

2023-05-26 上传