前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java与as3的socket通信

java与as3的socket通信

作者头像
py3study
发布2020-01-10 15:25:09
7530
发布2020-01-10 15:25:09
举报
文章被收录于专栏:python3python3

as3 与java 都提供了Socket类用于网络通信, 但两者的使用也有较大的不同. 为了方便两者的通信, 我在做了一些实验的基础上, 写下获得的经验,以免忘记. as3 的socket 读写数据方法常用的有四个: readUTF, writeUTF, readUTFBytes, writeUTFBytesjava 的socket 输入输出流常用BufferedReader 和 DataOutputStream 包装, 以提高读写效率 如: BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(),   "UTF-8")); DataOutputStream writer = new DataOutputStream(socket.getOutputStream()); as3 方写数据时用writeUTFBytes 方法, 此时java 方读数据用reader.readLine() 阻塞式方法. as3 方写数据时用writeUTF方法, 此时java 方应改用DataInputStream 类包装输入流, 因为BufferedReader 不提供读取UTF数据的方法. java 方写数据时用writeUTF方法, 此时as3 方读数据用readUTF方法, 但此种模式有个弊端, 就是如果java方连续调用了n(n >= 2)次writeUTF方法,而as3方因来不及读取, 则最后只是第一次写入的数据被读取. java 方写数据时用writeBytes, 此时as3 方读数据用readUTFBytes方法读取数据, 可以这样读取: msg = socket.readUTFBytes(socket.bytesAvailable). 一个简单的例子: // as3 写的客户端

package test { import flash.display.MovieClip; import flash.net.Socket; import flash.events.ProgressEvent; import flash.events.IOErrorEvent; public class TestSocket extends MovieClip { private var socket:Socket; private var msg:String; public function TestSocket() { init(); } private function init() { socket = new Socket("localhost", 60000); socket.addEventListener(ProgressEvent.SOCKET_DATA, readMsg); socket.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); } private function readMsg(e:ProgressEvent) { msg = socket.readUTF(); trace("message:" + msg); } private function errorHandler(e:IOErrorEvent) { trace(e.toString); } } }

//java 写的服务器端

import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; public class TestSocket { private ServerSocket socketServer; private Socket client; private DataOutputStream writer; private BufferedReader reader; public static void main(String[] args) { int socketPort = 60000; TestSocket test1 = new TestSocket(socketPort); } public TestSocket(int socketPort) { try { socketServer = new ServerSocket(socketPort); System.out.println("server is setted up"); while (true) { client = socketServer.accept(); //wrap input and output stream writer = new DataOutputStream(client.getOutputStream()); reader = new BufferedReader(newInputStreamReader(client.getInputStream())); //send message to client writer.writeUTF("hello client"); } } catch (IOException e) { e.printStackTrace(); } } }

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档