Flash 在8.0的时候已经有了关于socket 一些功能,但是功能还局限在一定角落里面。在9.0的 player 发展后,socket处理有了很大的改善,可以发送一些二进制的数据,从而通信能力大大提高。在说socket编程之前,我们还是不能忘记,flash在服务器领域还是“小学生”,不过在客户端领域,它就是一个“研究生”;
首先我们看一些利用java做客户端,java做服务器来搭建一个最简单的通信。所用到的知识,包括输入输出流,还有Socket知识点。
原理: 通信的过程,是一个双工的过程,也就是说,客户端既然 发送端 也是接收端 。同样服务器也是一样。
从这里可以看出,客户端的输入流 就是服务器的输出流所发送来的信息。而服务器的输入流同样是客户端所发送来的
一,客户端
程序的入口:是main 函数。
在main函数里面创建一个socket对象: Socket s = new Socket(host,port);
并写上两个参数,一个是主机名,也是ip ,而port 就是端口,指定一个端口。(这个端口要在允许的范围填写)
接下来,创建两个输入输出流:
InputStream ips =s.getInputStream();
OutputStream ops=s.getOutputStream();
通过Socket类的 getInputStream 和getOutputStream 返回输入输出流信息
为了使效率提高,在客户端引用缓冲。BufferedReader类用于缓冲使用。
BufferedReader brNet = new BufferedReader(
new InputStreamReader(ips));//输入流
BufferedReader brKeyBoard = new BufferedReader(
new InputStreamReader(System.in));//键盘缓冲
下一步 接收键盘输入的信息 以及 发送信息到服务器端里面去:
while(true){
String strWord =brKeyBoard.readLine();
pw.println("Jim:"+strWord+"/n");
System.out.println(brNet.readLine());
}
Socket 会抛出OException 异常,所以要进行捕捉。try{}catch()处理机制
二 服务器:
服务器搭建其实也很简单
首先创建一个ServerSocket ss=new ServerSocket(8001);
ServerSocket 对象,然后调用 accept()方法
Socket sk=ss.accept();一直阻塞,直到返回Socket对象这样我们就可以像在客户端一样进行输入流和输入出的处理。并返回输出结果 缓冲等等
输出结果:将客户端发送的字符串进行输出
while((word=br.readLine())!=null)
{
os.println("你好我是服务器");
os.flush();
System.out.println("内容:" + word);
}
但问题其实还是有的,在客户端发送的时候,由于没有过滤掉回车符所以在服务器里面会输出两个结果
等待连接....
连接成功....
获取里面的内容......
内容:Jim:dd
内容:
注意一个是有内容,一个是没有内容导致这个Tcp的通信出现问题。
接下来,我们尝试搭建flash客户端
Flash socket编程(2)
http://blog.csdn.net/hero82748274/archive/2009/02/09/3871461.aspx