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来连接。