안녕하세요. 자바독학중인 초보자입니다.
현재 자바 채팅서버와 안드로이드 클라이언트로 채팅을 구현하였는데
자바채팅서버에서 특정 broadcast 에 색깔을 넣을수 있나요???
채팅서버를 보면서 설명드리겠습니다.
class ChatThread extends Thread
{
private Socket socket;
private String id;
private BufferedReader br;
private PrintWriter pw;
private HashMap hm;
private boolean initFlag = false;
public ChatThread(Socket socket, HashMap hm)
{
this.socket = socket;
this.hm = hm;
try
{
pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
id=br.readLine();
System.out.println("사용자["+ id +"]님이 접속하셨습니다.");
synchronized(hm)
{
hm.put(this.id,pw);
broadcast("*** 닉네임 [" + id + "] 님이 접속하셨습니다 ***");
사용자가 접속하면 접속하였다고 전체메세지를 띄어줍니다.
}
}
initFlag = true;
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
public void run()
{
try
{
String line = null;
while((line = br.readLine()) != null)
{
broadcast(id + " : " +line);
이부분은 사용자가 입력한부분을 전체메시지로 보내는 부분입니다.
}
broadcast("***닉네임 [" + id + "] 님이 나갔습니다***");
사용자가 접속을 종료하면 나갔다고 전체메세지를 보냅니다.
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally
{
synchronized(hm)
{
hm.remove(id);
}
try
{
if(socket!=null)
socket.close();
}
catch (Exception ex)
{
}
}
}
public void broadcast(String msg) throws IOException
{
synchronized(hm)
{
Collection col = hm.values();
Iterator iter = col.iterator();
while(iter.hasNext())
{
PrintWriter pw = (PrintWriter)iter.next();
pw.println(msg);
pw.flush();
}
}
}
}
제가 궁금한건 사용자가 접속하거나 종료할때 혹은 원하는 broadcast에 글씨색깔을 넣을수있는지 궁금합니다.
예를들면 사용자가 접속할때나 종료할때는 빨간글씨로
대화를할때는 파란글씨로 보낼수있나요?
클라이언트에는 메세지를 보내기만 하기때문에 이런구문이없습니다.
혹시 이를해결할수있는방법이나 다른방법이있으면 키워드라도 알려주시면 열심히 구글검색해서 해결하겠습니다.
긴글읽어주셔서 감사합니다.