客户端代码:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="initApp();">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import flash.net.Socket;
import flash.utils.ByteArray;
private var socket:Socket=new Socket();//定义Socket,准备好情书的信封
//初始化程序
internal function initApp():void
{
socket.connect("localhost",719);//连接服务器
socket.addEventListener(Event.CONNECT,funConnect);//监听是否连接
socket.addEventListener(Event.CLOSE,funClose);//监听连接关闭
}
internal function funConnect(event:Event):void
{
loveText.text+="连接已建立 \n";
}
internal function funClose(event:Event):void
{
loveText.text+="连接已关闭"
}
internal function sendMessage(msg:String):void
{
//发送数据对应按钮click事件
var message:ByteArray=new ByteArray();//新建一个ByteArray存放数据
message.writeUTFBytes(msg+"\r\n");
//写入数据,writeUTFBytes方法,以utf-8格式转换数据避免出现中文乱码
socket.writeBytes(message);//写入Socket缓冲区
socket.flush();//调用flush方法发送信息
loveText.text+=msg+"\r\n";//在客户端屏幕上输出发送的内容
loveInput.text="";//清空发言框
}
]]>
</fx:Script>
<mx:TextArea x="10" y="10" width="703" height="263" id="loveText"/>
<mx:TextInput x="10" y="297" width="605" id="loveInput"/>
<mx:Button x="648" y="297" label="发送情书" id="sendBtn" click="sendMessage(loveInput.text)"/>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
</s:Application>
服务端JAVA代码:
package com.feng;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class HelloSocket {
private BufferedReader reader;//负责输入
private ServerSocket server;//服务器套接字
private Socket socket;//套接字
public HelloSocket(){
}//默认构造函数
void startServer()//启动服务器
{
try{
server = new ServerSocket(719);//创建服务器套接字
System.out.println("服务器套接字创建完毕");
while(true)
{
System.out.println("等待客户端Messages");
socket=server.accept();//若客户端Message提出连接请求,与Socket连接
System.out.println("完成与客户端的连接");
reader=new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));//获得socket输入流,"utf-8"这个编码设置是为了更好显示中文
getMessage();//读取来自客户端的数据,并输出至画面上
}
}catch (Exception e) {
System.out.println(e);
}finally{
try{
if(server != null)
server.close();//关闭服务器套接字
}catch (Exception e) {
// TODO: handle exception
}
}
}
void getMessage()//读取来自套接字的消息
{
try{
while(true)//循环
{
System.out.println("客户端Message说:"+reader.readLine());
}
}catch (Exception e) {
// TODO: handle exception
}finally{
System.out.println("客户端中断连接");
try{
if(reader != null) reader.close();//关闭套接字的输入流
if(socket != null) socket.close();//关闭套接字
reader=null;
socket=null;
}catch(Exception e){}
}
}
public static void main(String[] args)
{
HelloSocket server = new HelloSocket();
server.startServer();
}
}
客户端效果图:
服务端效果图: