`
AquariusM
  • 浏览: 145913 次
  • 性别: Icon_minigender_1
  • 来自: 南阳
社区版块
存档分类
最新评论

2010年9月17号---之Java与flash 通信Socket资源与理解整理

阅读更多

socket

这幅图片能够说明说明一下socket与底层的tcp/udp是什么样的关系。

而对于http来说无非是更高级的协议,socket封装了很多复杂的底层网络操作,但他仍然还是一个比较低层的操作。很多其他协议,比如Http协议和FTP协议等都是基于TCP/IP之上的,这也就意味着自己又定义了一大堆操作,但他其实仍然还是一个比较底层的操作。就算你有Socket的编程接口,也还是得去翻阅http协议文档去加载个图片或者XML。所以一般情况下,对于Flash应用非常多的应用程序协议比如http,Adobe又给封装了一把,让你可以从这些复杂的操作中脱身出来,只需要用个Loader对象就能加载个图片,并且显示出来。

 

好了我也不多说了下边这个连接里放的文章是相当不错的,道出了为什么as要支持socket的原因:

http://www.riameeting.com/node/492

 

AIR2.0入门教程[]: ServerSocket -(1) Socket简介

Posted 十二月 2nd, 2009 by bill

Adobe AIR2.0 给我们带来了好几个新特性,RIAMeeting在前面都有所介绍。如果你还没有设置好在AIR2.0测试版的开发环境,请看AIR2.0入门教程[]:新特性介绍以及开发环境的配置 

本文的阅读对象是对Socket概念不太理解或者有简单理解却不是很清楚的读者的。如果对Socket概念了解,可以略过本文,直接到下一篇中查看ServerSocket的介绍以及代码示范。我们这里的介绍,主要侧重于充当客户端的Socket概念介绍,关于ServerSocket的介绍,会在后面出现。Socket并不是AIR2.0中的新特性,而是已经存在于FlashPlayer9中的一个API.

 

 关于Flash中的Socket

大家可能经常也看到关于AIR或者Flash Player的新闻,从低版本到高版本很多人都很激动的说:支持XMLSocket了,支持Socket了,支持ServerSocket了等等。作为一个Actionscript的开发者,你也许很迷惑的想:这Socket到底是个什么玩意,大家至于这么激动么?

要说到Socket,实际上是一个网络上的概念。因为Flash这个平台以前主要是用来做很炫的动画的,后来Adobe慢慢调整其应用范围,扩展到了一些企业级应用程序的开发,线上实时游戏和AIR的桌面开发上来。你Flash原来再强悍都是搞动画的,要想在企业级应用程序开发,线上实时游戏或者桌面开发的市场上有所成就,你就得适应这个环境的需求。所以,Flash平台现在开始加入Socket方面的支持,其实是为了支持企业开发,线上实时游戏以及桌面开发。

Socket的来源

说了半天,还没有说Socket到底是什么。 所谓Socket的概念,实际上是对网络通信协议的一个封装的编程接口。如何理解呢?大家都知道我们现在用的互联网如果要通信,那要通过TCP/IP协议来进行互联通信。
TCP/IP
协议都是美国加利福尼亚大学伯克利分校的那些很牛很牛的科学家搞出来的一种描述数据应该如何封包,如何调配,如何确保数据传输安全可靠等。这协议的描述文档可能有好几百页厚。要是每个人编写涉及到网络通讯的程序都要去通读的话,估计能干这行的人没几个了。

为了能够让广大应用程序开发人员避免复杂的数学计算和繁复的文档说明,一般来说,在很多编程语言里面,都会有一个讲这些复杂的网络操作封装起来供开发人员使用的编程接口,即Socket接口。

基于Socket更高层的封装

不过,话说回来,你可能会问,我平时通过Flash加载个图片啊,加载个xml之类的不都是网络访问吗,不也没有用Socket吗。是这样的,这是由于Socket虽然封装了很多复杂的底层网络操作,但他其实仍然还是一个比较底层的操作。很多其他协议,比如HTTP协议还有FTP协议等都是基于TCP/IP之上的,也就意味他们自己又定义了一大堆操作,就算你有Socket的编程接口,你还得去翻HTTP协议文档去加载个图片或者XML。所以一般情况下,对于Flash应用非常多的应用程序协议比如http,Adobe又给封装了一把,让你可以从这些复杂的操作中脱身出来,只需要用个Loader对象就能加载个图片,并且显示出来。

更高层封装的限制

任何事情都不是完美的,HTTP协议的底层操作被封装在URLLoader这样的类里,导致作为Actionscript程序员,你只能通过HTTP协议去做一些通讯的事情。如果你想自定义自己的通信协议,或者说,你们公司有自己的通迅协议。你就行不通了。特别是HTTP协议中,有一点专门为HTTP访问优化的特点:一旦某个请求完成,这个同服务器的连接就断开了。这种机制可以让http服务器支持大量的访问,但是却给我们这些程序员造成了一个很大的问题。即时多人游戏对实时性很强,由于你无法一直跟服务器保持连接,导致你没法收到服务器的主动通知,从而不能及时得到其他游戏玩家的状态更新。这个问题其实一直都限制着广大的Flash游戏业程序员。虽然大家通过各种各样的方式来克服这个问题,但是,终究这种在HTTP协议限制下的通信机制本身就不是给你做实时游戏或者通讯的程序准备的。

Socket

到这里,大家其实能看出来,Socket是一种编程接口,这个编程接口帮你把麻烦的底层网络操作封装起来,又留给了你很大的自由空间让你自己发挥(不像URLLoader或者Loader那样制约你的一些操作)。

 Flash中加入Socket接口对开发人员的意义

1:对于开发人员来讲,Socket接口的加入,给大家打开了一扇广阔的大门。就如同我们刚刚提到过的,HTTP协议是基于Socket的一种高级别的应用程序层协议,Adobe已经将其封装,并且给大家一个URLLoader来使用。然而,Adobe不可能将所有的高级别的应用程序协议都为大家封装好供大家使用。比如说VNC VNC是一个非常有用的远程监视工具,有了VNC,你可以轻松监控一台远程电脑的桌面系统。从前VNC的客户端都是使用C++或者Java写的。现在,大家大可以直接通过Actionscript来连接到VNC服务器来显示远程桌面。 如果你对这个很感兴趣,google一下 actionscript vnc就行了。如果你对msn或者一些聊天工具感兴趣,那好,你大可以通过阅读这些聊天工具的协议文档,自己通过Actionscript去写一个Flash版的msn. gtalk等。

2:使得Flash可以适用于更多的企业开发中。Flash的优势,就是图形界面的构建成本非常低廉,比起C++,VBJava制作用户界面的开发成本不是一个级别的。 但是,企业开发中,有很多的通讯协议都是自定的,在一些电信,化工,电力方面,他们有自己的通讯协议,想通过Flash开发一个用户友好性很高而又能直接与设备进行通讯的客户界面,就需要Flash能够直接通过底层Socket来实现企业自己的自定义协议。

3Socket的另外一个最大的好处,就是通讯的实时性,当然,这是相对于HTTP来说的。我们在很多游戏平台中,由于需要多人同时游戏,就需要能够同步所有人的状态,而且是实时性越高,用户体验越好。由于Socket本身就是一个打开了的通讯管道,消息的同步变得比使用HTTP的方式更加简单也更加及时。

4AIR2.0中加入的ServerSocket更是强化了Actionscript在编程中的作用和能力。试想一下,你可以构建自己的服务,监听特定端口,甚至使用AIR2.0实现一个自己的p2p网络实现。

 

2010年10月8号补充内容:

服务器包括有状态和无状态两种类型,状态由协议本身而非实现决定。

TCP:有状态的协议

 

 

分享到:
评论

相关推荐

    Flash与JAVA的Socket通信

    Flash与Java的Socket通信是两种不同平台之间进行实时数据传输的一种技术,常用于构建富互联网应用程序(RIA)。本篇将深入探讨Flash与Java通过Socket接口实现通信的原理、步骤及其实现方法。 首先,我们需要了解...

    Java Socket 聊天通信演示代码

    Java Socket 是一种网络通信协议,它是Java编程语言中实现客户端-服务器模型的基础。Socket 提供了低级别的、面向连接的、双向通信的网络接口,允许应用程序通过网络进行数据传输。在本示例中,我们将深入探讨Java ...

    java-socketcan

    Java Can标签进一步强调了这个库是专门针对Java与CAN总线交互设计的。使用Java CAN,开发者可以编写纯Java的CAN应用,无需直接编写C或C++代码来操作CAN设备。 在实际应用中,开发者可以通过以下步骤使用这个库: 1...

    基于java的开发源码-Java Socket通信实现.zip

    基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java ...

    C#和java 之间基于Socket的通信

    本话题主要探讨了两种常用编程语言——Java和C#之间如何利用Socket进行通信。Socket是网络编程的基本接口,允许应用程序通过网络发送和接收数据。以下是关于"Java和C#之间基于Socket的通信"的详细知识点: 1. **...

    java与Melsec A-1E通信 java与PLC通信 源码,java与三菱PLC JAVA与Melsec A-1通信

    IOT开源网关、SCADA取数开源、PLC数据采集java与三菱 A-1E PLC通信 java与Melsec PLC通信 全开源 springboot与Melsec PLC A-1E通信上位机三菱PLC通信java与三菱PLC JAVA与Melsec A-1E通信 java与PLC通信 源码文件...

    Java c++ socket通信

    总结起来,Java和C++通过Socket进行通信,涉及到的关键概念包括TCP/IP协议、Socket接口、网络流的读写以及跨语言的数据编码与解码。这种通信方式灵活性高,但需要对网络编程有深入的理解才能有效地实现和维护。

    android中java和C的socket通信demo

    在Android开发中,有时我们需要进行Java层与C/C++(JNI)层的通信,以便利用C/C++的高性能优势处理一些底层任务。本教程将详细解释如何在Android中实现Java和C的Socket通信,特别是在涉及文件描述符传递的场景下。 ...

    java socket通信实现

    Java Socket通信实现是一种基于TCP/IP协议的网络通信方式,它允许两台计算机通过互联网进行双向数据传输。在Java中,Socket类和ServerSocket类是实现客户端-服务器模型通信的核心工具。下面将详细介绍Java Socket...

    java Socket通信实现

    Java Socket通信实现是Java网络编程中的重要组成部分,它允许两台计算机通过TCP/IP协议进行双向通信。在Java中,Socket提供了低级别的、基于连接的、面向数据流的通信API,可以用于实现客户端-服务器架构的应用程序...

    基于java的开发源码-smart-socket 开源的Java AIO框架.zip

    基于java的开发源码-smart-socket 开源的Java AIO框架.zip 基于java的开发源码-smart-socket 开源的Java AIO框架.zip 基于java的开发源码-smart-socket 开源的Java AIO框架.zip 基于java的开发源码-smart-socket ...

    java实现简单socket通信

    Java实现的简单Socket通信是网络编程中的基础技术,主要用于设备间的双向数据传输。在这个场景中,我们有两个窗口,一个作为服务器端,另一个作为客户端,它们通过TCP协议进行通信。TCP是一种面向连接的、可靠的传输...

    基于java的开发源码-Socket 聊天通信演示代码.zip

    基于java的开发源码-Socket 聊天通信演示代码.zip 基于java的开发源码-Socket 聊天通信演示代码.zip 基于java的开发源码-Socket 聊天通信演示代码.zip 基于java的开发源码-Socket 聊天通信演示代码.zip 基于java的...

    java上socket通信即时通信界面本

    Java Socket通信是网络编程中的重要一环,它提供了在两台计算机之间建立低级连接的能力,使得它们可以相互通信。在这个"java上socket通信即时通信界面本"中,我们很显然关注的是如何使用Java来构建一个具有图形用户...

    java与c++通过socket通信

    Java和C++之间的Socket通信是跨语言网络编程的一个常见应用场景,尤其在系统集成、设备通讯或者混合编程中。Socket提供了一种基于TCP/IP协议的进程间通信(IPC)方式,可以实现在不同操作系统上的进程之间的数据传输...

    java版本调用HP-Socket服务端代码

    java版本调用HP-Socket服务端代码,包含jna包及5.0.2版本的HP-Socket的dll文件,采用的是非常新的HP-Socket版本,demo是整套java工程,导入eclipse修改HpSocket.java文件中的服务器的IP和端口就可以测试,里面还包含...

    C++写的服务器与Java写的客户端通过Socket通信java代码

    总结起来,C++和Java通过Socket通信涉及的主要知识点包括:Socket接口的使用、TCP/IP协议的理解、数据的编码和解码、异常处理以及网络编程中的并发处理。在实际开发中,为了确保程序的健壮性和安全性,还需要考虑...

    Java Socket 通信服务与客户端完整示例

    在这个"Java Socket 通信服务与客户端完整示例"中,我们可以深入理解Socket通信的原理以及如何在实际项目中应用。 1. **Socket基本概念** - **ServerSocket**: 服务器端使用的类,用于监听客户端的连接请求。 - *...

    Socket通信技术(Java)

    Socket通信技术是Java编程环境中实现网络通信的一种基础方式,它基于TCP/IP协议栈,允许两台计算机通过网络进行数据交换。TCP(传输控制协议)是一种面向连接的、可靠的传输协议,确保了数据的顺序和完整性。 在...

Global site tag (gtag.js) - Google Analytics