分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

 

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

 

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

 

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

Flash Socket 编程 1

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

 

一,客户端

 

[c-sharp] view plain copy print?
  1. package com;  
  2.   
  3. import java.net.*;  
  4. import java.io.*;  
  5.   
  6. public class TcpClient {  
  7.   
  8.     public static void main(String[] args) {  
  9.         String host="127.0.0.1";  
  10.         int port =8001;  
  11.         try {  
  12.             Socket s = new Socket(host,port);  
  13.               
  14.             InputStream ips =s.getInputStream();  
  15.             OutputStream ops=s.getOutputStream();  
  16.             BufferedReader brNet = new BufferedReader(  
  17.                     new InputStreamReader(ips));//输入流  
  18.                       
  19.             PrintWriter pw = new PrintWriter(ops,true);  
  20.             BufferedReader brKeyBoard = new BufferedReader(  
  21.                     new InputStreamReader(System.in));//键盘缓冲  
  22.             while(true){  
  23.                 String strWord =brKeyBoard.readLine();  
  24.                 pw.println("Jim:"+strWord+"/n");  
  25.                 System.out.println(brNet.readLine());  
  26.               
  27.             }  
  28.             //pw.close();  
  29.         //  brNet.close();  
  30.         //  brKeyBoard.close();  
  31.         //  s.close();  
  32.         } catch (UnknownHostException e) {  
  33.             // TODO 自动生成 catch 块  
  34.             e.printStackTrace();  
  35.         } catch (IOException e) {  
  36.             // TODO 自动生成 catch 块  
  37.             e.printStackTrace();  
  38.         }  
  39.     }  
  40.   
  41. }  
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()处理机制

 

 

 

二 服务器:

[c-sharp] view plain copy print?
  1. package com;  
  2. import java.net.*;  
  3. import java.io.*;  
  4. public class Server {  
  5.       
  6.       
  7.     public static void main(String[] args) {  
  8.      PrintWriter os=null;  
  9.         try{  
  10.         ServerSocket ss=new ServerSocket(8001);  
  11.         System.out.println("等待连接....");  
  12.         Socket sk=ss.accept();  
  13.         System.out.println("连接成功....");  
  14.         BufferedReader br = new BufferedReader(new InputStreamReader(sk.getInputStream()));   
  15.         System.out.println("获取里面的内容......");   
  16.         //等待接受信息   
  17.         os = new PrintWriter(sk.getOutputStream());   
  18.        String word=null ;  
  19.       //发送信息   
  20.       while((word=br.readLine())!=null)  
  21.       {      
  22.        os.println("你好我是服务器");   
  23.        os.flush();   
  24.        System.out.println("内容:" + word);  
  25.          
  26.       }  
  27.     }  
  28.         catch(IOException ex)  
  29.         {  
  30.             ex.printStackTrace();  
  31.               
  32.         }  
  33.     }  
  34.   
  35. }  
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)

 

http://blog.csdn.net/hero82748274/archive/2009/02/09/3871461.aspx

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

Flash Socket 编程 1

相关文章:

  • 2022-02-08
  • 2021-12-23
  • 2022-01-24
  • 2021-12-20
  • 2022-01-14
  • 2021-12-06
  • 2021-09-14
  • 2022-12-23
猜你喜欢
  • 2021-11-14
  • 2022-12-23
  • 2021-09-27
  • 2021-04-19
  • 2021-07-01
  • 2021-06-28
相关资源
相似解决方案