本文只要分两部分:FLASH编程 和 Java编程,此文记录的仅仅是我在探索中的一些收获,
其中用了很多个人化的描述语言,并不是业界标准的用语。 :)
FLASH + JAVA 开发实时网络游戏
探索笔记:
目前国内Flash应用大部分还是在制作精美的动画方面,但据我了解早在Flash4 的时代,国外一些
人就已经开始将flash技术运用于开发动态网站(和php、asp、jsp结合)和开发应用程序(象网络游戏、
远程管理等应用软件)的项目中了。而直到今日,这方面在国内发展还是比较缓慢(有一部分原因是少数
人掌握了关键技术,但不愿意共享出来)。因此,我将致力于推动国内flash技术在开发动态网站和开发应
用程序方面的发展,并将自己亲手写的代码公布到网络中,以便于大家共享、交流。 于2003-10-24
涉及到的知识范畴:
1. socket概念
2. java编程语言
3. Flash MX ActionScript中的XMLSocket
实时网络游戏也属于大型应用程序范畴,一个关键环节就是建立实时主动通信环境(相对的,有个称为被动通
信的方式,最好的例子就是你正在用IE浏览器浏览一个网站,此时浏览器和服务器之间就是被动通信方式:如
果你不点击一个连接,发送一个WEB页面请求到WEB服务器,WEB服务器是不会主动向你的浏览器发送任何页面
的)。在此Socekt API就成为了首选。限于篇幅,这里不再过多解释socket的含义,只希望大家能记住一点,
只要建立能够实时通信的应用程序就需要建立socket连接。
【 FLASH编程部分 】
从mx自带的as字典中可以看出,Flash在网络通信方面得到了非常大的加强。
“The XMLSocket object is useful for client-server applications
that require low latency, such as real-time chat systems”
注意最后的一小段话:such as real-time chat systems(译文:例如实时聊天系统)
通过调用XMLSocket方法FLASH就可以和一些由强大语言编写的服务器应用程序进行
通信,进而开发出各种实时信息交流系统。所以我们的目标锁定在XMLSocket!
另外值得注意的是:有很多人一看到XMLSocket前面的XML三个字母,就觉得头疼,
以为必须先熟悉甚至精通XML才能使用这个对象及其方法,但我要说的是在你不太了解
XML的阶段,只要把XML信息看成是一个随意长度(>0)的字符串,把XMLSocket看成是一个只是
用来发送字符串数据的对象就好办多了。
我们还是从分析代码着手,来跨进开发FLASH实时网络游戏的大门吧:
//建立XMLSocket对象
var mySocket = new XMLSocket();
mySocket.connect("127.0.0.1",3000);
//========== 测试建立socket连接是否成功 ==========================
mySocket.onConnect = function(success)
{
if(success)
{
_root.ifconnectok = "ok";
trace("connect ok");
}
else
{
_root.ifconnectok = "failed";
trace("connect failed");
}
}
//====== End for 测试是否连接成功 =============================
//成功建立连接后 向服务器端发送一个测试用的字符串,以便服务器端能显示出信息。
mySocket.send("this is a testing String !!!");
FLASH中的程序就先到此,因为是基础篇,所以不会涉及太多的其他东西,呵呵。
【 java程序部分 】
import java.io.*; FLASH + JAVA 开发实时网络游戏
import java.net.*;
public class LocalServer
{
protected int listenPort = 3000;
public void acceptConnections()
{
try
{
ServerSocket server = new ServerSocket(this.listenPort);//同客户机的Socket对应,在服务器端,我们需要ServerSocket对象,参数是兼听的端口号
Socket incomingConnection = null;//创建一个客户端的Socket变量,以接收从客户端监听到的Socket
handleConnection处理
System.out.println("Server端正在等待一个socket连接......");
incomingConnection = server.accept();//调用该 ServerSocket 的 accept() 来告诉它开始侦听
System.out.println("一个socket客户端已经连接过来......");
handleConnection(incomingConnection);
} catch (BindException e) {
System.out.println("Unable to bind to port " + listenPort);
} catch (IOException e) {
System.out.println("Unable to instantiate a ServerSocket on port: " + listenPort);
}
}
public void handleConnection(Socket incomingConnection)
{
System.out.println("\r\n正在对此连接进行处理......");
try
{
//首先获取同Socket相关联的流outputToSocket和InputStream
//其中outputToSocket是要返回给客户端Socket的流
//InputStream是客户端发来的请求,在这里就是文件路径,即"RemoteFile.txt"
OutputStream outputToSocket = incomingConnection.getOutputStream();
InputStream inputFromSocket = incomingConnection.getInputStream();
BufferedReader streamReader = new BufferedReader(new InputStreamReader(inputFromSocket)); //首先要将InputStream转换到BufferedReader中
String line = null;
while ((line = streamReader.readLine()) != null)
{
System.out.println(line); //从streamReader中读出文件信息,直接输出到默认输出设备中(本例中是指dos窗口)
}
System.out.println("\r\n\r\n接受信息完毕!");
//完成之后关闭所有流,注意关闭Socket流的顺序
streamReader.close();
} catch (Exception e) {
System.out.println("Error handling a client: " + e);
}
}
//主程序,建立sever实例对象,然后运行对象的acceptConnections()方法
public static void main(String[] args) {
LocalServer server = new LocalServer();
server.acceptConnections();
}
}
java服务端程序就到此为止了,此时已经能够建立起一个最简单的C/S结构通信体系。
FLASH + JAVA 开发实时网络游戏
在此基础上再增加适当的东西 就能够开发出任何应用程序或者网络游戏。
其中用了很多个人化的描述语言,并不是业界标准的用语。 :)
FLASH + JAVA 开发实时网络游戏
探索笔记:
目前国内Flash应用大部分还是在制作精美的动画方面,但据我了解早在Flash4 的时代,国外一些
人就已经开始将flash技术运用于开发动态网站(和php、asp、jsp结合)和开发应用程序(象网络游戏、
远程管理等应用软件)的项目中了。而直到今日,这方面在国内发展还是比较缓慢(有一部分原因是少数
人掌握了关键技术,但不愿意共享出来)。因此,我将致力于推动国内flash技术在开发动态网站和开发应
用程序方面的发展,并将自己亲手写的代码公布到网络中,以便于大家共享、交流。 于2003-10-24
涉及到的知识范畴:
1. socket概念
2. java编程语言
3. Flash MX ActionScript中的XMLSocket
实时网络游戏也属于大型应用程序范畴,一个关键环节就是建立实时主动通信环境(相对的,有个称为被动通
信的方式,最好的例子就是你正在用IE浏览器浏览一个网站,此时浏览器和服务器之间就是被动通信方式:如
果你不点击一个连接,发送一个WEB页面请求到WEB服务器,WEB服务器是不会主动向你的浏览器发送任何页面
的)。在此Socekt API就成为了首选。限于篇幅,这里不再过多解释socket的含义,只希望大家能记住一点,
只要建立能够实时通信的应用程序就需要建立socket连接。
【 FLASH编程部分 】
从mx自带的as字典中可以看出,Flash在网络通信方面得到了非常大的加强。
“The XMLSocket object is useful for client-server applications
that require low latency, such as real-time chat systems”
注意最后的一小段话:such as real-time chat systems(译文:例如实时聊天系统)
通过调用XMLSocket方法FLASH就可以和一些由强大语言编写的服务器应用程序进行
通信,进而开发出各种实时信息交流系统。所以我们的目标锁定在XMLSocket!
另外值得注意的是:有很多人一看到XMLSocket前面的XML三个字母,就觉得头疼,
以为必须先熟悉甚至精通XML才能使用这个对象及其方法,但我要说的是在你不太了解
XML的阶段,只要把XML信息看成是一个随意长度(>0)的字符串,把XMLSocket看成是一个只是
用来发送字符串数据的对象就好办多了。
我们还是从分析代码着手,来跨进开发FLASH实时网络游戏的大门吧:
//建立XMLSocket对象
var mySocket = new XMLSocket();
mySocket.connect("127.0.0.1",3000);
//========== 测试建立socket连接是否成功 ==========================
mySocket.onConnect = function(success)
{
if(success)
{
_root.ifconnectok = "ok";
trace("connect ok");
}
else
{
_root.ifconnectok = "failed";
trace("connect failed");
}
}
//====== End for 测试是否连接成功 =============================
//成功建立连接后 向服务器端发送一个测试用的字符串,以便服务器端能显示出信息。
mySocket.send("this is a testing String !!!");
FLASH中的程序就先到此,因为是基础篇,所以不会涉及太多的其他东西,呵呵。
【 java程序部分 】
import java.io.*; FLASH + JAVA 开发实时网络游戏
import java.net.*;
public class LocalServer
{
protected int listenPort = 3000;
public void acceptConnections()
{
try
{
ServerSocket server = new ServerSocket(this.listenPort);//同客户机的Socket对应,在服务器端,我们需要ServerSocket对象,参数是兼听的端口号
Socket incomingConnection = null;//创建一个客户端的Socket变量,以接收从客户端监听到的Socket
handleConnection处理
System.out.println("Server端正在等待一个socket连接......");
incomingConnection = server.accept();//调用该 ServerSocket 的 accept() 来告诉它开始侦听
System.out.println("一个socket客户端已经连接过来......");
handleConnection(incomingConnection);
} catch (BindException e) {
System.out.println("Unable to bind to port " + listenPort);
} catch (IOException e) {
System.out.println("Unable to instantiate a ServerSocket on port: " + listenPort);
}
}
public void handleConnection(Socket incomingConnection)
{
System.out.println("\r\n正在对此连接进行处理......");
try
{
//首先获取同Socket相关联的流outputToSocket和InputStream
//其中outputToSocket是要返回给客户端Socket的流
//InputStream是客户端发来的请求,在这里就是文件路径,即"RemoteFile.txt"
OutputStream outputToSocket = incomingConnection.getOutputStream();
InputStream inputFromSocket = incomingConnection.getInputStream();
BufferedReader streamReader = new BufferedReader(new InputStreamReader(inputFromSocket)); //首先要将InputStream转换到BufferedReader中
String line = null;
while ((line = streamReader.readLine()) != null)
{
System.out.println(line); //从streamReader中读出文件信息,直接输出到默认输出设备中(本例中是指dos窗口)
}
System.out.println("\r\n\r\n接受信息完毕!");
//完成之后关闭所有流,注意关闭Socket流的顺序
streamReader.close();
} catch (Exception e) {
System.out.println("Error handling a client: " + e);
}
}
//主程序,建立sever实例对象,然后运行对象的acceptConnections()方法
public static void main(String[] args) {
LocalServer server = new LocalServer();
server.acceptConnections();
}
}
java服务端程序就到此为止了,此时已经能够建立起一个最简单的C/S结构通信体系。
FLASH + JAVA 开发实时网络游戏
在此基础上再增加适当的东西 就能够开发出任何应用程序或者网络游戏。