±Û¾´ÀÌ :±×´Ï 2000³â 5¿ù 31ÀÏ 18:26:06
¾ÖÇø´¿¡¼  Á¦°¡ ÀÓÀÇ·Î ¸¸µç °´Ã¼¸¦ äÆÃÇÁ·Î±×·¥ ó·³ 
¼Ò켙À» ¿¾î ¿À°í°¡°Ô ÇÒ ¼ö ÀÖ´ÂÁö ±Ã±ÝÇØ¼ ¹®ÀÇ µå¸³´Ï´Ù..
¾ÖÇø´°ú ¼¹ö°£¿¡ ¹®ÀÚ¿Àº Àß ¿À°¡´Âµ¥..¿À°¡¾ßÇÒ Á¤º¸ÀÇ ¾çÀÌ ¸¹¾Æ¼ °´Ã¼¸¦ ¸¸µé¾î ¾ÖÇø´ Ãø°ú ¼¹öÃø¿¡ °°ÀÌ ¸¸µé¾î ³õ°í ¼Ò켙À» ¿¾î¼ À̵¿À» ½Ã۸é 
ClassNotFoundException ÀÌ ¹ß»ýÇÕ´Ï´Ù..
¾ÖÇø´¿¡¼ ¼¹ö(¿¹¸¦ µé¸é äÆÃ¼¹ö)ÃøÀ¸·Î Á¦°¡¸¸µç Ŭ·¡½º¸¦ ¿À°¡°Ô ÇÒ¼ö´Â ¾ø³ª¿ä..¿¡Çø´-¼ºí¸´ °£ Åë½Åµµ ÇØº¸°í..¾ÈÇÑ°Ç ÄÚ¹Ù¿Í RMI¹Û¿¡ ¾ø´Âµ¥..°øºÎÇÒ ½Ã°£ÀÌ ¾ø´ÂÁö¶ó..¹®ÀÇ ¸¦ µå¸³´Ï´Ù..
Á¦°¡ ¸¸µç °´Ã¼´Â serializable ÀÎÅÍÆäÀ̽º¸¦ implements ÇØ¼ ¸¸µé¾ú½À´Ï´Ù..
±× ¾È¿¡´Â ´Ü¼øÇÑ String Çü¸¸ µÎ¾ú±¸¿ä..
java api¿¡¼ Á¦°øÇÏ´Â ¿¹¸¦µé¸é..
Date °´Ã¼´Â Àß ¿Ô´Ù°¬´Ù..Çϴµ¥..Á¦°¡ ¸¸µç°Ç ¾ÈµÇ³×¿ä..
¼Ò½º°¡ ±ú²ýÇÏÁö ¾Ê¾Æ Á˼۽º·¯¿îµ¥..
//////////////////////////////
/////////////////////////////
¿¡Çø´ ¼Ò½ºÀÔ´Ï´Ù..
/////////////////////////////
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
//¾ÖÇø´ Ŭ·¡½º
public class ImgDisplay2 extends JApplet
{
	static String imgfile="allapt35.gif"; //Áý ±¸Á¶µµ
	static String iconfile="tv2.jpg";    //Àü±¸±×¸²
		
      public void init()
	{
		Image img=getImage(getCodeBase(),imgfile);
		Image icon=getImage(getCodeBase(),iconfile);
		
		
		System.out.println("À̹ÌÁö ºÒ·¯¿À±â ¼º°ø");
		
		ImgPanel imgpanel=new ImgPanel(img,icon);
		System.out.println("allpanel created");
		getContentPane().add(imgpanel);
		String str="Å×½ºÆ®ÀÔ´Ï´Ù.";  //Å×½ºÆ®¿ë ½ºÆ®¸µ
		
	     Home_Info mesg=new Home_Info("203.248.108.145",str);
		(new HSock_Client()).connect(mesg);   //client ¼Ò켙ÀÇ connect ÇÔ¼ö È£Ãâ
	}
}
 
class Cen_Info extends Object implements java.io.Serializable
{
  String message;
  
  public Cen_Info(String message)
  {
    this.message=message;
  }
  public String getMsg()
  {
    return message;
  }
}
class Home_Info extends Object implements java.io.Serializable
{
  
  String message;
  String hostIP;
  public Home_Info(String hostIP,String message)
  {
    this.message=message;
    this.hostIP=hostIP;
  }
  public String getMsg()
  {
    return message;
  }
  public String getHostIP()
  {
    return hostIP;
  }
  
 }
 
//¼Ò켙ÀÓ¹«¸¦ ¼öÇàÇÏ´Â client
class HSock_Client implements Runnable//Cen_ResponseHandler//,Runnable
{
  
  public HSock_Client()                  //»ý¼ºÀÚ
  {
    Cen_IP="203.248.108.145";
    Cen_Port=10000;
  }
  public HSock_Client(String IP,int Port)
  {
    Cen_IP=IP;
    Cen_Port=Port;
  }
 
  public void connect(Home_Info mesg)             //Home_Info ¶ó´Â °´Ã¼¸¦ Áß¾Ó¼¹ö¿¡ º¸³½´Ù.
  {
    String name=mesg.getHostIP();
    String message=mesg.getMsg();
    
    System.out.println("Ȩ¼¹öÀ̸§:"+name+",º¸³¾ ¸Þ½ÃÁö:"+message);
    try
    {
      socket=new Socket("203.248.108.145",10000);
      System.out.println("****Áß¾Ó¼¹ö¿Í ¿¬°áµÊ***");
      System.out.println("Áß¾Ó¼¹ö:"+Cen_IP+"   ,Port Num:"+Cen_Port);
            
      OutputStream os=socket.getOutputStream();//Áß¾Ó ¼¹ö¿¡ º¸³»´Â ½ºÆ®¸² os
      toServer =new ObjectOutputStream(os);    //filter ½ºÆ®¸² toServer
      
      System.out.println("****Áß¾Ó¼¹ö·ÎÀÇ Ãâ·Â ½ºÆ®¸² »ý¼º***");
      
      send(mesg);  //°´Ã¼¸¦ º¸³½´Ù..
      
      InputStream is=socket.getInputStream(); //Áß¾Ó ¼¹ö·ÎºÎÅÍ ÀÔ·ÂÀ» ¹Þ´Â ½ºÆ®¸² is
      fromServer=new ObjectInputStream(is);  //filter ½ºÆ®¸² fromServer
      
      System.out.println("****Áß¾Ó¼¹ö·ÎºÎÅÍÀÇ ÀÔ·Â ½ºÆ®¸² »ý¼º***");
      
      receiver=new Thread(this);
      receiver.start();
      
      System.out.println("***Ȩ¼¹ö ¾²·¹µå È£Ãâ****");
    }
    catch(IOException e)
    {
      System.out.println("***¿¬°á½ÇÆÐ***"+e);
    }
    catch(NumberFormatException e)
    {
      System.out.println("***¿¬°á½ÇÆÐ:Æ÷Æ®¹øÈ£°¡ À߸øµÇ¾ú½¿***");
    }
  }
  
  public void run()
  {
    try
    {      
      System.out.println("***Ȩ¼¹ö ¾²·¹µå »ý¼º***");
           
      //Áß¾Ó ¼¹ö·ÎºÎÅÍÀÇ ¸Þ½ÃÁö ó¸® ·çÇÁ
      while(receiver !=null)
      {
      	Object obj=fromServer.readObject();
      	Cen_Info mesg=(Cen_Info)obj;
            System.out.println("Áß¾Ó¼¹ö·ÎºÎÅÍÀÇ ¸Þ½ÃÁö:"+ mesg.getMsg() );
        
      }
    }
    catch(IOException e)
    {
      System.out.println("***¾²·¹µå »ý¼º½Ã ¿À·ù***"+e);
    }
    catch(ClassNotFoundException e)
    {
      System.out.println("***ÇÁ·Î±×·¥ ¹ö±×:Ŭ·¡½º ÈÀÏÀÌ ´©¶ôµÇ¾ú½À´Ï´Ù.***");
    }
  }
  //Áß¾Ó¼¹ö·Î °´Ã¼¸¦ º¸³»´Â ÇÔ¼ö
  void send(Home_Info mesg) throws IOException    //Home_Request:Áß¾Ó ¼¹ö¿¡ º¸³»´Â °´Ã¼
  {
    toServer.writeObject(mesg);
    toServer.flush();
  }    
  //½ºÆ®¸²°ú ¼Ò켙À» ´Ý¾ÆÁØ´Ù.
  void close()
  {
    try
    {
      fromServer.close();
      
      System.out.println("Áß¾Ó¼¹ö·ÎºÎÅÍ ½ºÆ®¸² ¿¬°áÁ¾·á");
      
      toServer.close();
      
      System.out.println("Áß¾Ó¼¹ö¿¡·ÎÀÇ ½ºÆ®¸² ¿¬°áÁ¾·á");
      if(socket != null){
        socket.close();
        
        System.out.println("³²Àº ¼ÒÄÏ Á¾·á½Ã۱â");
      }
    }
    catch(IOException e)
    {}
    
    receiver=null;
    
  }
  
  //µ¥ÀÌŸ ¸â¹öº¯¼ö Á¤ÀÇ
  
  private String Cen_IP;                //Home IP Address
  private int Cen_Port;                 //Home Server Port Number
  private Socket socket;                //Home client ¼ÒÄÏ
  private Thread receiver;              //Home client ¾²·¹µå°´Ã¼..
  private ObjectInputStream fromServer;
  private ObjectOutputStream toServer;
  
  
}
//¾ÖÇø´¿¡ ºÙÀÏ À̹ÌÁö ÆÐ³Î..1°³¸¸ »ç¿ë
class ImgPanel extends JPanel 
{
	Image img=null;          //Áý ±¸Á¶µµ À̹ÌÁö
	Image icon=null;         //¼±ÅÃÇÒ¼ö ÀÖ´Â ÄÄÆ÷³ÍÆ® À̹ÌÁö
	Image selectimg=null;    //¿òÁ÷ÀÌ´Â ¼±ÅÃÀ̹ÌÁö..
	static int current=0;    //¼±ÅÃµÈ °¡ÀüÀÇ ¹øÈ£
	private int images=12;   //ÄÁÆ®·ÑÇÒ °¡ÀüÀÇ °³¼ö
	private int evtArea =25; //À̺¥Æ®¸¦ ¹Þ´Â ¹üÀ§
	private int pX;          //Áý ±¸Á¶µµ¿¡ ºÙÀÎ °¡ÀüÀÇ À§Ä¡
	private int pY;
	private int fixflag=0;   //fixflag °¡ 1ÀÌ¸é ¿òÁ÷ÀÎ ÄÄÆ÷³ÍÆ®ÀÇ ±×¸²À» ±×¸®ÀÚ.
	                         //Á¦´ë·Î °¡ÀüÀ» ¼±ÅÃÇß´ÂÁö ÆÇ´Ü.
	private int isSelect;    //¼±ÅÃµÈ À̹ÌÁö¿µ¿ªÀ» Á¦´ë·Î ¼±ÅÃÇßÀ¸¸é 1·Î ¼³Á¤
	                         //µå·¡±× ¾Ø µå·ÓÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù.
	private static final int SQUARELENGTH=20;
	
	public ImgPanel(Image img,Image icon)
	{
		this.img=img;
		this.icon=icon;
		
		setBackground(Color.lightGray);
		
		//¸¶¿ì½º ¸®½º³Ê µî·Ï
		addMouseListener(new MouseAdapter()
		{
			public void mouseClicked(MouseEvent evt)
			{
				int cx;//Ŭ¸¯À§Ä¡
				int cy;
				cx=evt.getX();
				cy=evt.getY();
				//x,yÀ§Ä¡¸¦ ÆÄ¾ÇÇØ µå·ÎÀ® ÇÑ´Ù.
				//Graphics g=getGraphics();
				select(cx,cy);//¸Â´Â ¾ÆÀÌÄÜÀ» ãÀÚ
			}
			public void mousePressed(MouseEvent evt)
			{
				if( find(evt.getX(),evt.getY()) )
					isSelect=1;
				else isSelect=0;
				
			}
		      public void mouseReleased(MouseEvent evt)
		      {
		      	pX=evt.getX();
		      	pY=evt.getY();
		      	if(isSelect==1)
		      	{
		      		current=0;
		      		fixflag=1;
		      		isSelect=0;
		      		repaint();
		      	}
		      }
		      	
		 });
				
	}
	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
		g.setColor(Color.magenta);
		g.drawImage(img,0,0,this);
		for(int i=0;i<images/2;i++)
	           g.drawImage(icon,500,50+i*50,this);
	      for(int i=0;i<images/2;i++)
	           g.drawImage(icon,550,50+i*50,this);
	      
            if(current==7)
            {
                 selectimg=icon;
		     g.drawImage(icon,400,200,this);//¼±ÅÃµÈ À̺¥Æ®¸¦ (400,200)¿¡ ¹«Á¶°Ç ±×¸®ÀÚ
                 pX=400;
                 pY=200;
            }
            
            //¿òÁ÷ÀÎ À̹ÌÁö¿¡ ´ëÇÑ ±×¸²±×¸®±â
            if(fixflag==1)
            	g.drawImage(selectimg,pX,pY,this);
            
	}
		
	//x,y À§Ä¡¸¦ ÆÄ¾ÇÇØ ¾î´À À̹ÌÁö°¡ À̺¥Æ® ¹ß»ýÇß´ÂÁö¸¦ ã¾Æ¼ paintÇÔ¼ö È£Ãâ
	public void select(int x,int y)
	{
		if(x<575&&x>550&&y<75&&y>50)
		{
			System.out.println("Image clicked");
			current=7;
			repaint();
			//g.drawImage(icon,500,200,this);
		}
	}
	public boolean find(int x,int y)//¼±Åÿµ¿ª ¾È¿¡ ÀÖ´ÂÁö ÆÄ¾ÇÇÏ´Â ÇÔ¼ö
	{
		if( x > pX && x < pX+SQUARELENGTH && y > pY && y < pY+SQUARELENGTH )
		{
			System.out.println("select image selected");
			return true;
		}
		return false;
	}
		
}
/////////////////////////////////////
ÄÁ¹öÅÍÇÑ html ÄÚµåÀÔ´Ï´Ù..
/////////////////////////////////////
<html>
	<body>
	
  </body>
</html>
//////////////////////////////////////