Flex AS3与Java Socket通信实现详解

5星 · 超过95%的资源 需积分: 9 25 下载量 36 浏览量 更新于2024-07-31 收藏 104KB DOC 举报
"这篇资源主要介绍了如何在Flex AS3中使用Socket进行与Java的通信,展示了基本的连接、数据发送和接收的实现过程。" 在Web开发中,Flex AS3是一种常用的富互联网应用(RIA)开发技术,它可以创建交互性强、图形丰富的用户界面。Java作为后端服务器语言,常常用于处理复杂的业务逻辑和数据管理。当需要Flash组件(如游戏或动态UI)与服务器进行实时通信时,Socket通信是一种有效的方式。 在标题和描述中提到的"Flex AS3与Java的Socket通信"是指通过AS3代码控制的Flash客户端与Java后台服务之间建立的TCP/IP套接字连接。下面将详细解释这个过程: 1. **新建Flash文件和AS3类**: 开发者首先创建一个名为`SocketExample.fla`的Flash文件,并在ActionScript 3(AS3)环境中编写一个对应的类`SocketExample.as`。AS3类继承自`Sprite`,这样可以在舞台上添加显示对象,比如按钮。 2. **初始化Socket对象**: 在`SocketExample`类的构造函数中,创建了一个`Socket`对象,这是AS3中用于TCP连接的类。通过`new Socket()`实例化它。 3. **事件监听**: - `Event.CONNECT`事件监听器用于当连接到服务器时触发`onConnect`方法,这标志着客户端已经成功连接到服务器。 - `ProgressEvent.SOCKET_DATA`事件监听器则用于监听从服务器接收到的数据,当数据到达时调用`onSocketData`方法。 4. **添加按钮及事件处理**: 创建一个按钮`btnSend`,并为其添加`MouseEvent.CLICK`监听器。当用户点击按钮时,会触发`sendData`方法,用于向服务器发送数据。 5. **发送数据**: `sendData`方法检查Socket是否已连接。如果未连接,将尝试通过`socket.connect()`方法连接到指定的服务器地址和端口。一旦连接建立,可以使用`socket.writeUTFBytes()`方法发送字符串数据到服务器。 6. **接收数据**: `onSocketData`方法是处理接收到的服务器数据的地方。`socket.readUTFBytes()`可以读取Socket上可用的字节,并将其转换为字符串。 在实际应用中,开发者还需要处理各种错误和异常,比如连接失败、数据解析错误等。此外,为了确保安全性和性能,通常会采用异步通信模型,使用回调函数来处理数据传输。 Flex AS3与Java的Socket通信是通过创建Socket连接实现客户端和服务器之间的双向通信,这对于实时游戏、聊天应用或其他需要实时交互的项目非常有用。开发者需要掌握AS3的Socket类以及Java的Socket编程,以便在两者之间建立可靠的通信链路。

以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 上传