论坛首页 入门技术论坛

小型CHATROOM分析2

浏览 1472 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-02-29  
● 发送给指定用户的方法:参数srcName代表发送者,msgContent发送的内容,destName接受消息的人

Public static synchronized sendToOnlyUser(String srcName,String msgContent,String destName)

{

//向客户端队列 的一个遍历发送

msgContent= srcName+”说”+”\r\n”;

//创建一个集合,把实例化了的用户线程队列clientMap放进去

java.util.Set<String > Set=clientMap.keySet();

java.util.Iretarator keyIT= Set.iterator();

while(keyIT.hasNext())

{

String keysUser= keyIT.next();

ProcessClient pc=clientMap.get(keysUser);

//开始向一个指定的对象发送消息

If(keysUser.equalsIgnoreCase(destName))

{

System.out.println(“进入私人聊天时间!”);

msgContent= srcName+”对你说”+ msgContent+”\r\n”;

pc.sendToClient(srcName,msgContent);

}

}

}








2:创建独立线程,处理对应客户端Socket请求的类

Public class ProcessClient extends Thread

{

Public ProcessClient(java.net.Socket client)

{

This.client=client;

}

Public void run()

{


}

//处理客户端的连接

Public void chatClient(java.net.Socket socket)

{

Try{

This.userAddress= socket.getRemoteSocketAddress.toString();

Java.io.InputStream ins= socket.getInputStream();

Java.io.OutPutStream ous=socket.getOutPutStream();

Int i=0;

StringBuffer sb=new StringBuffer();

username=getUserName(ins ,ous);

//输入用户名成功将自己加入到对象列表中

UserManager.addUserThread(username,this);

String msg= username+”在登陆前有”+UserManager.getOnlineCount()+”人”;

UserManager.sendToAllUser(“系统”+ msg);

String msgToOnly;

While(true)

        {  

I=ins.read();

//客户端回车 代表消息已经发送完毕

If(i==13)

{

String s=sb.toString();


}


}


}

Catch(Exception e)

{


}


}

//得到用户名

Public String getUserName(java.io.InputStream ins,java.io.OutputStream ous)

{

String userName=””;

Try{

Int i=0;

StringBuffer sb=new StringBuffer();

String welcomeMsg=”你好,欢迎加入聊天室,请输入你的名字:\r\n!”;

Ous.write(welcomeMsg.getBytes());

//读取用户名

If((i=int.read())!=-1)

{

If(int==13)

{

userName=sb.toString();

userName=(ISO2GBK)userName;

}

}

}

Catch()

{}

Return userName;

}

//对消息内容进行编码,以免出现乱码

Public String ISO2GBK(String src)

{

Try{

Src=new String (src.getBytes(“ISO-8859-1”),”GBK”);



}

Catch(Exception e)

{}

}

Private String username;

Private String userAddress;

Private Socket client;

         }


论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics