Java 与 Flash Socket 通信基础示例
Socket用以开发后端网络传输,通过端口来实现网络传递,在日常软件网络 应用中经常遇到,如即时通讯聊天工具软件,网络文件传输都需要用到,在FTP文件上传工具软件中都用到Socket来将文件传输到服务器中。服务端程序提供IP端口,然后在客户端程序中获取服务器IP和指定端口即可实现网络通讯传输。在本文将简单介绍Java Socket基础原理与通信。示例中除了在Java与Java程序之间的项目通讯之外,还在Flash中实现了与Java Socket服务端通讯。
示例实施
服务端程序 先Netbeans中建立一个Java 应用程序/Application做服务端程序,在本文中命名为 “Server”。在Server类中的main方法中启动Socket服务端程序端口“1234”,并且输出发送字符 “dat” 的内容。下面是详细代码。
package server; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.text.SimpleDateFormat; /** * Java Socket 基础示例 (服务端程序) * Copyright (C) 遺昕|Weisim3.com 05.07.2012 */ public class Server { /** * @param args the command line arguments */ public static void main(String[] args) { SimpleDateFormat sDateFormat =new SimpleDateFormat("yyyy-MM-dd E hh:mm:ss"); String dat = "weisim3.com connection time :" + sDateFormat.format(new java.util.Date()); try { ServerSocket srvr = new ServerSocket(1234); Socket skt = srvr.accept(); System.out.print("Server has connected!\\n"); PrintWriter out = new PrintWriter(skt.getOutputStream(),true); System.out.print("Sending string: '" + dat + "'\\n"); out.print(dat); out.close(); skt.close(); srvr.close(); } catch(Exception e) { System.out.print("Oh! It didn't work!\\n"); } } }
客户端程序
Java客户端 在Netbeans中建立一个Java 应用程序/Application做服务端程序,在本文是命名为“Client”,在Client类中的main方法中建立Socket连接服务器的IP和指定端口“1234”。并且将服务端程序的参数读取出来。下面详细代码。
package client; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.Socket; /** * Java Socket 基础示例 (客户端程序) * Copyright (C) 遺昕|Weisim3.com 05.07.2012 */ public class Client { /** * @param args the command line arguments */ public static void main(String[] args) { try { Socket skt = new Socket("192.168.1.100", 1234);//Server 端口号 BufferedReader inReader = new BufferedReader(new InputStreamReader(skt.getInputStream())); System.out.print("Received string: '"); while (!inReader.ready()) {} System.out.println(inReader.readLine()); // 读取 System.out.print("'\\n"); inReader.close(); } catch(Exception e) { System.out.print("Oh! It didn't work!\\n"); } } }
下面图例是Java Socket 从服务端Server程序到客户端Client程序的执行过程效果。
Flash Socket客户端程序 在Flash CS里面新建一个Flash文件(Actionscript3.0),然后再舞台放入一个按钮,在按钮中向服务端调用Java Socket程序。Flash 客户端 Actionscript3.0中的Socket和Java客户端很相似。同样在Socket指定服务器IP地址和端口。下面是详细代码。
//Java Socket 基础示例 (Flash客户端程序) //Copyright (C) 遺昕|Weisim3.com 05.07.2012 var s:Socket; var isLink:Boolean; var newFormat:TextFormat = new TextFormat(); function sendData(e:MouseEvent):void { s=new Socket("192.168.1.100",1234); //s=new Socket("localhost",1234);也可以用localhost只限于本地 s.addEventListener(ProgressEvent.SOCKET_DATA, getData); } btn_getSocket.addEventListener(MouseEvent.CLICK,sendData); var txt:TextField =new TextField(); function getData(event : ProgressEvent):void { var output:String=s.readUTFBytes(s.bytesAvailable); //txt.wordWrap=true; txt.text=output; txt.x=16; txt.width=520; addChild(txt); newFormat.size=24; txt.setTextFormat(newFormat); txt.textColor=0x003299; trace(output); }
下面图例是Java Socket 从服务端Server程序到Flash客户端Client程序的执行过程效果。
示例程序需要先将服务器程序Server启动,然后再编译启动客户端Client程序,Flash程序也一样(Flash程序在下载文件Client文件夹中)。Socket 端口本文示例开发机器局域网IP是 192.168.1.100,用户下载之后需要根据自己本地机器上IP来做修改,在本地也可以用localhost来连接。