flash socket java_Flash Socket 编程(1)

Flash 在8.0的时候已经有了关于socket 一些功能,但是功能还局限在一定角落里面。在9.0的 player 发展后,socket处理有了很大的改善,可以发送一些二进制的数据,从而通信能力大大提高。在说socket编程之前,我们还是不能忘记,flash在服务器领域还是“小学生”,不过在客户端领域,它就是一个“研究生”;

首先我们看一些利用java做客户端,java做服务器来搭建一个最简单的通信。所用到的知识,包括输入输出流,还有Socket知识点。

原理: 通信的过程,是一个双工的过程,也就是说,客户端既然 发送端 也是接收端 。同样服务器也是一样。

0818b9ca8b590ca3270a3433284dd417.png

从这里可以看出,客户端的输入流 就是服务器的输出流所发送来的信息。而服务器的输入流同样是客户端所发送来的

一,客户端

package com;

import java.net.*;

import java.io.*;

public class TcpClient {

public static void main(String[] args) {

String host="127.0.0.1";

int port =8001;

try {

Socket s = new Socket(host,port);

InputStream ips =s.getInputStream();

OutputStream ops=s.getOutputStream();

BufferedReader brNet = new BufferedReader(

new InputStreamReader(ips));//输入流

PrintWriter pw = new PrintWriter(ops,true);

BufferedReader brKeyBoard = new BufferedReader(

new InputStreamReader(System.in));//键盘缓冲

while(true){

String strWord =brKeyBoard.readLine();

pw.println("Jim:"+strWord+"/n");

System.out.println(brNet.readLine());

}

//pw.close();

//brNet.close();

//brKeyBoard.close();

//s.close();

} catch (UnknownHostException e) {

// TODO 自动生成 catch 块

e.printStackTrace();

} catch (IOException e) {

// TODO 自动生成 catch 块

e.printStackTrace();

}

}

}

程序的入口:是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()处理机制

二 服务器:

package com;

import java.net.*;

import java.io.*;

public class Server {

public static void main(String[] args) {

PrintWriter os=null;

try{

ServerSocket ss=new ServerSocket(8001);

System.out.println("等待连接....");

Socket sk=ss.accept();

System.out.println("连接成功....");

BufferedReader br = new BufferedReader(new InputStreamReader(sk.getInputStream()));

System.out.println("获取里面的内容......");

//等待接受信息

os = new PrintWriter(sk.getOutputStream());

String word=null ;

//发送信息

while((word=br.readLine())!=null)

{

os.println("你好我是服务器");

os.flush();

System.out.println("内容:" + word);

}

}

catch(IOException ex)

{

ex.printStackTrace();

}

}

}

服务器搭建其实也很简单

首先创建一个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)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值