java zmq api_zmqSocket 使用和相关java后台准备

zmqSocket.as是通过flex自带的socket在前端实现和后台消息通讯的一个简单类库,本来想简单配置下zmqSocket的使用,结果发现各种限制各种问题,整理出最后的使用规范和注意事项如下:

首先关于后台(小弟使用java编写的后台,其他语言这里仅供参考):

1、首先是跨域文件的获取,flex默认回去端口843寻找垮与文件,发送请求"",并希望获得类似下列格式的跨域许可文件。

所以后台服务最好提供这样一个端口来专门负责处理

另外的一个解决方式是在客户端直接使用Security.loadPolicyFile(url); ,从指定的url去获取垮与文件。

2、关于服务端设置,因为socket是以二进制字节流传输信息的,所以要求服务端也应该是针字节流进行解析(xmlSocket貌似没有这样的问题,后面测测再补充下,如果大家有其他方案也可以告知我下,互相学习)。

*****服务端采用的方式,通过读取二进制数组,并将二进制数组接写成字符转来做最终的转义,写入的时候也是直接写入二进制字符串

附上一个java端实现许可文件提供的服务以供参考:

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.ServerSocket;

import java.net.Socket;

public class FlexServer2 {

public static void main(String args[]) {

try {

DataInputStream din;

DataOutputStream dout;

ServerSocket flexServer = new ServerSocket(843);

while (true) {

Socket client = flexServer.accept();

din = new DataInputStream(client.getInputStream());

dout = new DataOutputStream(client.getOutputStream());

String s;

String backFile = "<?xml version=\"1.0\"?>"

+ ""

+ ""

+ ""

+ "";

// 设置一个长度空间的二进制数组来获取客户端信息

byte[] backBytes = backFile.getBytes("utf-8");

while (true) {

byte[] b = new byte[2048];

int length = din.read(b, 0, b.length);

if (length != -1) {

s = new String(b, 0, length);

System.out.println("843读到的信息:" + s);

if (s.equals("")) {

dout.write(backBytes);

dout.flush();

} else {

break;

}

}

}

din.close();

dout.close();

client.close();

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值