今天我们来制作 Flash 聊天室,学习使用 Socket 类,用 Java 作后台,开发一个 C / S 架构的多人聊天程序。首先,设计用户界面。
一、界面设计
界面的元件全部使用 Flash CS3 自带的组件:
首先,放入 TextInput 组件(实例名 input_txt),作为用户输入;
再放入 Button 组件(实例名 submit_btn),用于提交输入的信息;
最后放入 TextArea 组件(实例名 output_txt),显示聊天信息。
二、组件参数初始化
由于客户端代码不是很多,我们这次就写在动作帧上:
// ************ 组件参数初始化 ************
submit_btn.label = "发送消息";
output_txt.editable = false;
// 设置各组件中字体的大小
input_txt.setStyle("textFormat", new TextFormat(null, 15));
output_txt.setStyle("textFormat", new TextFormat(null, 15));
submit_btn.setStyle("textFormat", new TextFormat(null, 15, null, true));
// 当按下回车或点击 submit_btn 按钮后调用事件处理函数
submit_btn.addEventListener(MouseEvent.CLICK, sendMessage);
addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
// 事件处理函数
function onKeyDown(evt:KeyboardEvent):void {
if (evt.keyCode == Keyboard.ENTER) {
sendMessage(null);
}
}
function sendMessage(evt:Event):void {
// 测试:将 input_txt 的内容输出到 output_txt 中
output_txt.appendText(input_txt.text + "/n");
// 清空 input_txt,并设置焦点到 input_txt
input_txt.text = "";
stage.focus = input_txt;
}
三、编写客户端 Socket
1. 首先,Socket 连接非常简单:
var socket:Socket = new Socket();
socket.connect("127.0.0.1", 8888);
其中 connect() 方法中的两个参数分别为是主机名和端口号(端口号尽量用 1024 以上)。好了,这样就连接上了。接下来是读写的问题。
2. 向服务器端写入字符串:我们在 sendMessage() 方法中进行写入操作,注意写出的字串必需以回车(/n)结束:
function sendMessage(evt:Event):void {