有空随便写了一个 FALSH 的聊天室,其服务器端是用 JAVA ,客户端是用的 FLASH
相比之前的网页版本(AJAX)聊天室,在性能,速度,时时性上面都有很大提升
下面贴出一写代码,供大家参考
package test;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;
import java.util.Vector;
public class Test {
private ServerSocket server;
Vector sManager=new Vector();//管理套接字的Vector
Random rnd=new Random();//创建随机数的发生器
public Test(){}
// 运行服务器
void startServer()
{
try
{
server=new ServerSocket(8888);
System.out.println("服务器已经启动!");
while(true)
{
Socket socket=server.accept();
System.out.println("客户机进入服务器");
new KBBCom_Thread(socket).start();
sManager.add(socket);
System.out.println("当前客户机连结数:"+sManager.size());
}
}catch(Exception e){}
}
class KBBCom_Thread extends Thread//与客户机进行通信的线程累
{
Socket socket; //套接字引用变量
private DataInputStream reader; //套接字输入流
private DataOutputStream writer; //套接字输出流
KBBCom_Thread(Socket socket) //构造函数
{
this.socket=socket;
}
public void run()
{
try
{
//获取套接字的输入输出流
reader=new DataInputStream(socket.getInputStream());
writer=new DataOutputStream(socket.getOutputStream());
String msg;
//如果收到客户端发来的数据
while((msg=reader.readUTF())!=null)
{
//writer.writeUTF(msg);
//writer.flush();
sendMessageAll(msg);
//System.out.println("来自客户机:"+msg);
}
}catch(Exception e){}finally
{
try
{
sManager.remove(socket);//删除套接字
//关闭输入输出流及套接字
if(reader!=null)reader.close();
if(writer!=null)writer.close();
if(socket!=null)socket.close();
reader=null;
writer=null;
socket=null;
//向屏幕输出相关信息
System.out.println("客户机离开服务器");
System.out.println("当前客户机的连接数:"+sManager.size());
}catch(Exception e){}
}
}
}
public void sendMessageAll(String msg){
for(int i = 0;i<sManager.size();i++){
Socket socket = (Socket)sManager.get(i);
DataOutputStream writer = null;
try {
writer=new DataOutputStream(socket.getOutputStream());
writer.writeUTF(msg);
writer.flush();
} catch (Exception e) {
}finally{
try{
//if(writer!=null)writer.close();
//if(socket!=null)socket.close();
//writer=null;
//socket=null;
}catch(Exception ex){}
}
}
}
//main函数
public static void main(String[] args) {
Test server=new Test();
server.startServer();
}
}
<?xml version="1.0" encoding="utf-8"?>
| 4 网页聊天室模块(FLV的聊天室) SWF格式 | 2008-05-19 15:21:31 |