[±ä±ÞÁú¹®]°ªÀ» ³Ñ°Ü¾ß Çϴµ¥ ¾ÈµÇ¿ä--;


[ ´ÙÀ½ ±Ûµé ] [ À̾ ±Û¿Ã¸®±â(´äÇϱâ) ] [ ÀÚ¹Ù ¹¯°í ´äÇϱâ ]

±Û¾´ÀÌ :¹æ¼±ÀÏ 2000³â 5¿ù 30ÀÏ 01:40:58

¾È³çÇϼ¼¿ä...
Ä£±¸ÀÇ Ã¤Æüҽº¸¦ °¡Áö°í °øºÎ¸¦ Çϸ鼭 Á¦°¡ »ý°¢Çϴ´ë·Î °íÃÄ°¡°í ÀÖ´Â ÁßÀÔ´Ï´Ù.
¾ÆÁ÷Àº ¾î·Á¿îÁ¡ÀÌ ¸¹Áö¸¸ ±×·¡µµ ÇϳªÇϳª ¾Ë¾Æ°¡´Â ¸ÀÀÌ ½ò½òÇÏÁö¿ä. ±×·±µ¥ ¹®Á¦°¡ Çϳª »ý°å½À´Ï´Ù. ¹ú½á ÀÌƲ°ÀÌÁö¿ä. ÀüÇô Áøµµ°¡ ³ª°¡Áö ¾Ê°í ÀÖ½À´Ï´Ù. ¾Æ·¡ ¼Ò½º¸¦ ÀüºÎ ´Ù ºÙÀÏÅÙµ¥ ChatApplet¿¡¼­ MakeRoomÀ¸·Î clubÀ» ³Ñ±â´Â ¾î¶»°Ô º¸¸é °£´ÜÇÒ ¼öµµ Àִµ¥ ÇØ°áÀÌ ¾ÈµÇ´Â±º¿ä. °ªÀÌ ³Ñ¾î°¡´Â°Ç È®ÀÎÇߴµ¥ ±× °ªÀ» ³Ñ±æ ¼ö°¡ ¾ø½À´Ï´Ù. °í¼ö´ÔµéÀÇ ¸·°­ÇÑ ÇѹæÀ» ºÎŹµå¸³´Ï´Ù. ±×¸®°í Á» ±ÞÇÏ´Ù°í ÇÒ ¼ö ÀÖ´Â ¹®Á¦ÀÌ´Ï º¸½Ã´Â´ë·Î ÂØ±Ý Â¥Áõ³ª½Ã°ÚÁö¸¸ ¾Æ³¦¾ø´Â Á¶¾ð ºÎŹµå¸³´Ï´Ù.


=ChatApplet.java================
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
/**
*class ChatApplet : ¼­¹ö¿Í Á¢¼Ó,Åë½Å ¹× °ü·Ã ÇÁ·¹ÀÓÀ» ÅëÁ¦ÇÏ´Â ¸ÞÀΠŬ·¡½º
*/
public class ChatApplet extends Applet implements ActionListener,Runnable,MouseListener
{
private MainFrame mf;
private RoomFrame rf;
private MakeRoom mr;
private ErrorFrame ef;
private Vector toMsg = new Vector();//Åë½ÅÀ» À§ÇÑ º¤ÅÍ
private Vector fromMsg = new Vector();

private String chatName;//Ŭ¶óÀ̾ðÆ®ÀÇ À̸§=´ëÈ­¸í
private Integer roomNum;//ÇöÀç ¼ÓÇÑ ¹æ¹øÈ£
private Integer roomNumber;//ÇöÀç Ŭ¸¯ÇÑ ¹æ¹øÈ£

private Socket chatSocket;//¼ÒÄÏ
private static ObjectInputStream streamIn;//¸Þ¼¼Áö ¼ö½Å¿ë Stream
private static ObjectOutputStream streamOut;//¸Þ¼¼Áö Àü¼Û¿ë Stream

private TextField joyID;//´ëÈ­¸íÀ» ÀԷ¹ÞÀ» TextField
private Button goBtn;
private static int nState =0;
private static int state =0;
private Point p ;


String club = ""; //ÃʱâÇϵåÄÚµù
String id="";

public void init()
{
club = getParameter("club");


state++;
if(state == 1){
String host = getCodeBase().getHost();
int port = Integer.parseInt(getParameter("port"));
//////////////////////////
//////////////////////////
Point p = new Point();
connect(host,port);
}else{
destroy();
}
}//init()

public void start(){}//start()
public void stop(){}//stop()

public void destroy()
{
if(nState != 0){
exitChat();
super.destroy();
}
}//destroy()

/**
*¼­¹ö·Î ¸Þ¼¼Áö(º¤ÅÍÇüÅÂ) º¸³»±â
*@param vec Äڵ带 Æ÷ÇÔÇÑ ¼­¹ö·Î º¸³Ú ¸Þ¼¼Áö
*/
public void toServer(Vector vec)
{
try
{
streamOut.writeObject(vec);
streamOut.flush();
streamOut.reset();//¹Ýµå½Ã Áý¾î ³Ö¾î¾ß ÇÔ......
}catch(Exception e){
}
}// toServer()

/**
* ¼ÒÄÏÀ» ¿¬°áÇÏ°í ´ëÈ­¸í ÀÔ·ÂâÀ» Ç¥½ÃÇÑ´Ù.
*@param host ¿¬°áÇÒ È£½ºÆ®ÀÇ À̸§
*@param port ¿¬°áÇÒ È£½ºÆ®ÀÇ Æ÷Æ® ¹øÈ£
*/
public void connect(String host , int port)
{
try
{
//Åë½ÅÀ» À§ÇÑ ¼ÒÄÏÀ» ¿­°í ½ºÆ®¸²À» ¸¸µç´Ù.
chatSocket = new Socket(host, port);
streamIn = new ObjectInputStream(chatSocket.getInputStream());
streamOut = new ObjectOutputStream(chatSocket.getOutputStream());
//Á¤»óÀûÀÎ ¿¬°á½Ã nState¸¦ 1·Î ¸¸µç´Ù.
//////////////
try{
fromMsg = (Vector)(streamIn.readObject());
Integer header = (Integer)(fromMsg.firstElement());
fromMsg.removeAllElements();
if(header.intValue() == 101){
toMsg.addElement(new Integer("001"));
toServer(toMsg);
if(!toMsg.isEmpty()) toMsg.removeAllElements();
nState= 1;
}

fromMsg = (Vector)(streamIn.readObject());
header = (Integer)(fromMsg.firstElement());
fromMsg.removeAllElements();
if(header.intValue() == 102){
//´ëÈ­¸í ÀԷ â
setLayout(new BorderLayout());
joyID = new TextField(getParameter("id"),12); //getParameter("id")
joyID.setEditable(false);
goBtn = new Button("½ÃÀÛ");
goBtn.requestFocus();
goBtn.addActionListener(this);
add( joyID,"Center");
add(goBtn,"East");
}
}catch(ClassNotFoundException cnfe){
}
}catch(UnknownHostException uhe){
System.exit(1);
}catch(IOException e){
System.exit(1);
}
}//connect()

/**
* äÆà Á¾·á¸¦ À§ÇÑ ¸Þ¼Òµå. ¼ÒÄÏÀ» ´Ý°í ÇÁ·¹ÀÓÀ» ´Ý´Â´Ù.
*/
public void exitChat()
{
try
{
nState = 0;
toMsg.addElement(new Integer("020"));
toServer(toMsg);
toMsg.removeAllElements();

mf.setVisible(false);
mr.setVisible(false);
rf.setVisible(false);
ef.setVisible(false);

mf.dispose();
mr.dispose();
rf.dispose();
ef.dispose();

mf=null;
mr=null;
rf=null;
ef=null;

streamOut.close();
streamIn.close();
chatSocket.close();
}catch(IOException e){}
}
////////////////Àüü »ç¿ë ¸Þ¼Òµå-----------------------------------------------

/////MainFrame¹öÆ° ó¸® ¸Þ¼Òµå/////////////////////////////////////////////////////
//reflash¹öÆ°À» ´­·¶À»¶§ÀÇ »ç¿ë ¸Þ¼Òµå
/**
*»õ·Î¿î ¹æÁ¤º¸¸¦ ¿ä±¸ÇÏ´Â ¸Þ¼Òµå
*/
public void reflash()
{
try{
toMsg.addElement(new Integer("007"));
toServer(toMsg);
}catch(Exception e){
ef.changeMsg("¹æÁ¤º¸¸¦ °»½ÅÇϴµ¥ ¿À·ù°¡ ÀÖ½À´Ï´Ù.");
}finally{
toMsg.removeAllElements();
}
}

//¹æ¸¸µé±â ¹öÆ°À» ´­·¶À»¶§ÀÇ Ã³¸®
/**
*¹æ¸¸µé±â¸¦ Çã¶ô ¹Þ´Â ¸Þ¼Òµå
*/
public void makeRoom()
{
toMsg.addElement(new Integer("004"));
toServer(toMsg);
toMsg.removeAllElements();
}

//¹æ¿¡ µé¾î°¡±â ¹öÆ°À» ´­·¶À»¶§ÀÇ Ã³¸®
/**
*¹æ¿¡µé¾î °¡±â¸¦ ¿ä±¸ÇÏ´Â ¸Þ¼Òµå
*/
public void enterRoom()
{
if(roomNumber.intValue() != 0){
toMsg.addElement(new Integer("006"));
toMsg.addElement(roomNumber);
toServer(toMsg);
toMsg.removeAllElements();
}else{
ef.changeMsg("µé¾î°¥ ¹æÀ» ¸ÕÀú ¼±ÅÃÇϼ¼¿ä");
}
}

//»ç¿ëÀÚ Á¤º¸¸¦ À§ÇÑ ¸Þ¼Òµå--------MainFrame,RoomFrame°ø¿ë
/**
*ƯÁ¤¹æÀÇ »ç¿ëÀÚ ¸®½ºÆ® ¿ä±¸ÇÏ´Â ¸Þ¼Òµå
*/
public void userInfo(Integer roomN)
{
toMsg.addElement(new Integer("008"));
toMsg.addElement(roomN);
toServer(toMsg);
toMsg.removeAllElements();
}
////////////////MainFrame»ç¿ë ¸Þ¼Òµå--------------------------------------------


////RoomFrameó¸®¿ë ¸Þ¼Òµå//////////////////////////
//´ëÈ­ ³»¿ëÀ» º¸³×´Â ¸Þ¼Òµå
/**
*´ëÈ­ ³»¿ëÀ» ¼­¹ö·Î º¸³×´Â ¸Þ¼Òµå
*@param to ¹ÞÀ»»ç¶÷
*@param text º¸³×´Â ³»¿ë
*/
public void sendMessage(String to,String text)
{
try{
toMsg.addElement(new Integer("009"));
toMsg.addElement(to);
toMsg.addElement(text);
toServer(toMsg);
}catch(Exception e){
ef.changeMsg("´ëÈ­¸Þ¼¼Áö Àü´Þ¿¡ ¿À·ù°¡ ÀÖ½À´Ï´Ù.");
}finally{
toMsg.removeAllElements();
}
}
/**
*¹æ¿¡¼­ ³ª¿Í ´ë±â½Ç·Î °¥¶§ »ç¿ëÇÏ´Â ¸Þ¼Òµå
*/
public void exitRoom()
{
toMsg.addElement(new Integer("010"));
toServer(toMsg);
toMsg.removeAllElements();

userInfo(new Integer("000"));
roomNum = new Integer("000");
roomNumber = roomNum;
p = rf.getLocation();
rf.setVisible(false);
mf.setLocation(p);
mf.setVisible(true);
reflash();
}
////RoomFrame»ç¿ë ¸Þ¼Òµå------------------------------------------------------


///MakeRoom»ç¿ë ¸Þ¼Òµµ/////////////////////////////////////////////
//¸¸µç ¹æ¿¡ ´ëÇÑ Á¤º¸ Á¦°ø
/**
*¸¸µé¹æÀÇ Á¦¸ñ°ú ÃÑ¿øÀ» ¼­¹ö·Î º¸³Ù´Ù
*@param s ¹æÁ¦
*@param i ÃÑ¿ø
*/
public void mkRoom(String s, Integer i, String club)
{
toMsg.addElement(new Integer("005"));
toMsg.addElement(s);
toMsg.addElement(i);
toMsg.addElement(club);
toServer(toMsg);
toMsg.removeAllElements();
}
///////////////////////////
//////////////////////////MakeRoom»ç¿ë¸Þ¼Òµå --------------------------------


//mouseEvent ó¸®///////////////////////////////////
public void mouseClicked(MouseEvent me)
{
String name = (mf.getSelectedString()).trim();
String rN = name.substring(name.indexOf('[')+1,name.indexOf(']'));
if(!rN.equals(null)) {
Integer im = new Integer(rN);
userInfo(im);
roomNumber = im;
}else{
ef.changeMsg("¹æÀ» ¼±ÅÃÇϼ¼¿ä");
}
}
public void mousePressed(MouseEvent me){}
public void mouseReleased(MouseEvent me){}
public void mouseEntered(MouseEvent me){}
public void mouseExited(MouseEvent me){}

//ActionEvent ó¸®/////////////////////////
public void actionPerformed(ActionEvent ae)
{
Object o = ae.getSource();
if(o==goBtn){
try{
chatName = joyID.getText();
if(!chatName.equals(null)){
toMsg.addElement(new Integer("002"));
toMsg.addElement(chatName);
toServer(toMsg);
toMsg.removeAllElements();
nState++;


if(nState == 2){
//¾²·¹µå¸¦ Çü¼ºÇÏ°í ½ºÅ¸Æ® ½ÃŲ´Ù..
Runnable r = new ChatApplet();
Thread thd = new Thread(r);
thd.start();
}
}
ef.changeMsg("´ëÈ­¸íÀ» ¹Ýµå½Ã ÀÔ·ÂÇØ ÁÖ¼¼¿ä");
}catch(Exception e){
// ef.changeMsg("´ëÈ­¸íÀԷ½à ¿¡·¯ ¹ß»ý...");
}
}
//MainFrameÀÇ ¹öÆ° ó¸®>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
else if(o==mf.reflashBtn)
{
reflash();
}
else if(o==mf.enterRoomBtn)
{
if(roomNumber.intValue() != 0){
enterRoom();
}else{
ef.changeMsg("µé¾î°¥ ¹æÀ» ¼±ÅÃÇϼ¼¿ä");
}
}
else if(o==mf.makeRoomBtn)
{
makeRoom();
}
else if(o==mf.exitChatBtn){
destroy();
}
///RoomFrameÀÇ ¹öÆ° ó¸®>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
else if(o==rf.exitRoomBtn)
{
exitRoom();
}
else if (o == rf.sayTF)
{
try{
String to = rf.getSelectedString();
String inputmsg = rf.getMessage();
if(!inputmsg.equals("")){
sendMessage(to,inputmsg);
}
}catch(Exception e){
}
}
///MakeRoomÀÇ ¹öÆ° ó¸®>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
else if(o == mr.btMake)
{
try{
Integer i = mr.getRoomNumber();
String s = mr.getRoomTitle();
if(i.intValue() <= 20 && !s.equals(null) && s.length()<=50){
mkRoom(s,i,club);
}else{
ef.changeMsg("µ¿È£È¸¸í(25ÀÚ ÀÌÇÏÀÇ ±ÛÀÚ)¸¦ ÀÔ·ÂÇϼ¼¿ä");
}
}catch(Exception e){
ef.changeMsg("ÇÑ ¹æ¿¡ 20¸í±îÁö ´ëÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù");
}
}
else if (o == mr.btCancel)
{
p=mf.getLocation();
mr.setVisible(false);
mf.setLocation(p);
mf.setVisible(true);
}
} //ActionPerformed



///////////////////////////////////////////////////////////////////////////////
// ¾²·¹µå ½ÇÇà ¸Þ¼­µå////////////////////////////////////////////////
/**
*¾²·¹µå·Î ½ÇÇàÇÒ ¸Þ¼Òµå, ÇÁ·¹ÀÓµéÀ» ÃʱâÈ­ÇÏ°í ¼­º¸¿Í Åë½Å,Á¦¾îÇÑ´Ù.
*/
public void run()
{
//´ë±â½Ç ÃʱâÈ­--------------------------------------------------------
mf = new MainFrame("´ë±â½Ç",this);
mf.setSize(600,400);
mf.setResizable(false);
mf.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e){
mf.setVisible(false);
destroy();
}
}
);
//´ëÈ­¹æ ÃʱâÈ­--------------------------------------------------------
rf = new RoomFrame("´ëÈ­¹æ",this);
rf.setSize(600,400);
rf.setResizable(true);
rf.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e){
exitRoom();
}
}
);
//¹æ¸¸µé±ââ-----------------------------------------------------------


mr = new MakeRoom("¹æ¸¸µé±â", this, club);
mr.pack();
mr.setResizable(false);
mr.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e){
mr.setVisible(false);
mf.setVisible(true);
}
}
);
//¿¡·¯ ¸Þ¼¼Áö¿ë â------------------------------------------------------
ef = new ErrorFrame();
ef.setSize(200,100);
ef.pack();
ef.setResizable(false);
//----------------------------------------------------------------------------//
try
{
Vector msg = new Vector();
while(true)
{
msg = (Vector)(streamIn.readObject());
if(!msg.isEmpty()){
switch(((Integer)(msg.firstElement())).intValue()){
case 103://´ë±â½ÇÈ£Ãâ
mf.setLocation(100,100);
mf.setVisible(true);
reflash();
userInfo(new Integer("000"));
roomNum = new Integer("000");
roomNumber = roomNum;
break;
case 104://¹æ ¸¸µé±â Çã¶ô ÄÚµå -> ¹æ¸¸µé±â â
p = mf.getLocation();
mr.setLocation(p);
mr.setVisible(true);
mf.setVisible(false);
break;
case 105://¹æÀÌ ¸¸µé¾îÁ³À»¶§
roomNumber = (Integer)(msg.elementAt(1));
enterRoom();
break;
case 106://¹æ ÀÔÀå½Ã
//ÇöÀç ÀÔÀåÇÏ´Â °æ¿ì
if(roomNum.intValue() == 0){
roomNum = (Integer)msg.elementAt(2);
roomNumber = new Integer("000");
userInfo(roomNum);
p=mf.getLocation();
mf.setVisible(false);
mr.setVisible(false);
rf.setRoomTitle(msg);
rf.screenClear();
rf.setLocation(p);
rf.setVisible(true);
rf.welcomeMsg(msg);
}else{//»õ·Î¿î ÀÔÀåÀÚ°¡ ÀÖ´Â °æ¿ì
userInfo(roomNum);
rf.welcomeMsg(msg);
}
break;
case 107://¹æ¿¡ ´ëÇÑ Á¤º¸¸¦ ¹ÞÀ»¶§
mf.displayRoomInfo(msg);
break;
case 108://»ç¿ëÀÚ¿¡ ´ëÇÑ Á¤º¸¸¦ ¹ÞÀ»¶§
//´ë±â½Ç¿¡¼­ÀÇ ÀÛ¾÷
if(roomNum.intValue() == 0){
mf.displayUserInfo(msg);
}else{//´ëÈ­¹æ¿¡¼­ÀÇ ÀÛ¾÷
rf.roomUserList(msg);
}
break;
case 109://´ëÈ­¹æ¿¡¼­ äÆÃÁß
rf.writeToScreen(msg);
break;
case 110://¹æ¿¡¼­ ³ª°¬À»¶§
userInfo(roomNum);
rf.byeMsg((String)msg.elementAt(1));
break;
case 191://¿¡·¯Ã³¸®
break;
case 192://¹æÀοøÀÌ °¡Æ¯ ãÀ»¶§ÀÇ ¿¡·¯
ef.changeMsg("Àοø ÃÊ°ú...");
reflash();
break;
case 193://¾ø´Â¹æ¿¡ ´ëÇÑ Á¢¼ÓÀ» ¿ä±¸ÇßÀ»¶§ÀÇ ¿¡·¯
ef.changeMsg("¹æÀÌ ¾ø½À´Ï´Ù...");
reflash();
break;
case 194://µ¿ÀÏÇÑ ¾ÆÀ̵𰡠ÀÖÀ»¶§
ef.changeMsg("ÀÌ¹Ì ¾ÆÀ̵𰡠ÀÖ½À´Ï´Ù....");
break;
}
}
msg.removeAllElements();
}//while
}catch(Exception e){
ef.changeMsg(e.getMessage());
}
}//run() ////////////////////////////////////////////////////////////////////
}//ChatApplet


=MakeRoom.java=====================
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;


/**
*Class MakeRoom : äÆùæÀ» ¸¸µé±âÀ§ÇÑ ÇÁ·¹ÀÓ
*/
public class MakeRoom extends Frame
{
private ChatApplet ca;
private TextField tfRoomTitle, tfTotalNumber;
private Label lbTitle, lbNumber;
/**¹æ¸¸µé±â ¹öÆ°*/
Button btMake;
/**¹æ¸¸µé±â Ãë¼Ò ¹öÆ°*/
Button btCancel;
/**
*äÆùæÀ» ¸¸µé±âÀ§ÇÑ ÇÁ·¹ÀÓÀ» »ý¼ºÇÑ´Ù.
*@param s ÇÁ·¹ÀÓÀÇ Å¸ÀÌƲ
*@param handler ¹öÆ°ÀÌ ´­·¶À»¶§ À̸¦ ó¸®ÇÒ ¸®½º³Ê °´Ã¼
*/
public MakeRoom(String s, ActionListener handler, String c) //
{
super(s);


setLayout(new GridBagLayout()); // new GridLayout(3,2)


lbTitle = new Label("µ¿È£È¸ À̸§");
tfRoomTitle = new TextField(c,40);
lbNumber = new Label("ÃÖ´ëÀοø");
tfTotalNumber = new TextField("20",3);
btMake = new Button("¸¸µé±â");
btCancel = new Button("Ãë¼Ò");


add(lbTitle);
add(tfRoomTitle);
add(lbNumber);
add(tfTotalNumber);
tfTotalNumber.setEditable(false);
add(btMake);
add(btCancel);


btMake.addActionListener(handler);
btCancel.addActionListener(handler);


addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e) {
setVisible(false);
dispose();
}
}
);

}
/**
*ÀÔ·ÂµÈ ¹æÁ¦¸ñÀ» ¾ò´Â´Ù
*@return ¹æ Á¦¸ñ
*/
public String getRoomTitle()
{
return tfRoomTitle.getText();
}


/**
*ÀÔ·ÂµÈ ¹æÀÇ ÃÑ¿øÀ» ¾ò´Â´Ù.
*@return ¹æÀÇ ÃÖ´ëÀοø
*/
public Integer getRoomNumber()
{
return new Integer(tfTotalNumber.getText());
}
}


==================================
c ÀÇ °ªÀ» ³Ñ±â´Â °Í ±îÁö´Â È®ÀÎÀÌ µË´Ï´Ù.(ÇϵåÄÚµùÇÏ¸é ±Ý¹æ È®ÀεÇÁö¿ä) ±×·±µ¥ ÆĶó¹ÌÅÍ·Î ¹ÞÀº °ªÀ» ³Ñ±æ ¼ö ÀÖ´Â ¹æ¹ýÀ» ¸ð¸£°Ú¾î¿ä. µµ¿ÍÁÖ¼¼¿ä~~~~~~~~~


´ÙÀ½ ±Ûµé:



À̾ ±Û¿Ã¸®±â(´äÇϱâ)

À̸§:
E-Mail:
Á¦¸ñ:
³»¿ë:
HTML ÅÂ±× Æ÷ÇÔ ¿©ºÎ: HTML ¹®¼­ÀÏ °æ¿ì üũ
°ü·Ã URL(¼±ÅÃ):
URL Á¦¸ñ(¼±ÅÃ):
°ü·Ã À̹ÌÁö URL:


[ ´ÙÀ½ ±Ûµé ] [ À̾ ±Û¿Ã¸®±â(´äÇϱâ) ] [ ÀÚ¹Ù ¹¯°í ´äÇϱâ ]