[ Java ] Server-Client 연결 (오픈캔버스)

ekdud1660의 이미지

Server와 Client를 연결해서 Client에서 Frame을 생성하고 거기서 그린 그림의 좌표를 String으로 만들어 Server측에 보내서 다시 그 좌표 정보를 이용하여 x,y에 각각 대입하여 점을 찍으려고합니다.
즉, Client에서 그린 그림을 그대로 Server측 Frame에 그리려고 하는데 각각 디버깅하면 처음 찍은 점만 보내지네요.
그리고 Client 측에 제가 그린 그림이 보이지 않네요. 해결팁 좀 도움주세요.\

-----------------------------------클라이언트 코드-----------------------------------
package client;
 
public class Client {
	public static void main(String[] args) {
		Sender sender = new Sender(); 
		Drawer drawer = new Drawer(sender.getOutputStream());
	}
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
package client;
 
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
 
public class Sender {
	private DataOutputStream out;//����
 
	public Sender(){
		Thread senderThread = new Thread(new Runnable() {
			public void run(){
				try{
					Socket socket = new Socket("155.230.29.155", 4444);
					System.out.println("클라이언트 시작");
					out = new DataOutputStream(socket.getOutputStream());
					System.out.println("데이터 보냈음");
					}catch(IOException e){
				}
			}
		});
 
		senderThread.start();
	}//sender method
 
	public DataOutputStream getOutputStream() {
		return out;
	}
 
}//Sender
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
package client;
 
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.DataOutputStream;
 
public class Drawer extends Frame implements MouseMotionListener, WindowListener
{
	int x = 0;
	int y = 0;
 
	Image img = null;
	Graphics gImg = null;
 
	private DataOutputStream mOutput;
 
	public Drawer(DataOutputStream out){
		mOutput = out;
		addMouseMotionListener(this);		
 
		setTitle("Client");
		pack();
		setBounds(100,100,500,500);
		setVisible(true);
 
		img = createImage(500,500);
		gImg = img.getGraphics();
		gImg.drawString("마우스 왼쪽을 눌러 그리세요",10,50);
	}//MakeFrame
 
 
 
	public void mouseDragged(MouseEvent me){
		if(me.getModifiersEx() == MouseEvent.BUTTON1_DOWN_MASK){
			x = me.getX();
			y = me.getY();
			gImg.drawString("*", x, y);
			while(mOutput!=null)
			{
				try{
					String cdn = "x:"+x+","+"y:"+y;
					System.out.println("string생성 :"+"("+x+","+y+")");
					mOutput.writeUTF(cdn);
				}catch(Exception e){}
			}
			repaint();//class.x
		}
	}//mouseDragged
 
 
	public void paint(Graphics g){
		if(img!=null)
			g.drawImage(img, 0,0,this);
	} //Paint
 
	public void mouseMoved(MouseEvent e) {
	}
	public void windowActivated(WindowEvent e) {
	}
	public void windowClosed(WindowEvent e) {
	}
	public void windowClosing(WindowEvent e) {
		System.exit(0);
	}
	public void windowDeactivated(WindowEvent e) {
	}
	public void windowDeiconified(WindowEvent e) {
	}
	public void windowIconified(WindowEvent e) {
	}
	public void windowOpened(WindowEvent e) {
	}
}//class
 
-------------------------------서버측코드---------------------------------------
 
package server;
 
public class Server {
	public static void main(String args[])
	{
		Receiver r = new Receiver();
	}//mains
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
package server;
 
 
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
 
public class Receiver extends Frame implements WindowListener{
 
	Socket socket;
	DataInputStream is;
 
	Image img = null;
	Graphics gImg = null;
 
	int x=0;
	int y=0;
 
	public void paint(Graphics g){
		if(img!=null)
			g.drawImage(img, 0,0,this);
	} //Paint
 
	public Receiver(){
		Thread acceptThread = new Thread(new Runnable() {
			public void run() {
				try {
					ServerSocket serverSocket = new ServerSocket(4444);
					System.out.println("서버소켓생성 완료"); //������ ������ ��!
					while ( !Thread.currentThread().isInterrupted() ) {
 
						System.out.println("접속준비중");
 
						socket = serverSocket.accept();
						System.out.println("접속완료");
						is = new DataInputStream(socket.getInputStream());
 
						setTitle("Server");
						pack();
						setBounds(100,100,500,500); 
						setVisible(true);
 
						img = createImage(500,500);
						gImg = img.getGraphics();
						gImg.drawString("상대방그림",10,50);
 
 
						try{
							System.out.println("받은 데이터 : "+is.readUTF());
							String cdn = is.readUTF();
							String[] a = cdn.split(",");
							for(int i=0;i<2;i++)
							{
								String[] v = a[i].split(":");
								if(v[0].equals("x")){
									x = Integer.parseInt(v[1]);
								}else if(v[0].equals("y")){
									y = Integer.parseInt(v[1]);	
								}//if
 
								gImg.fillOval(x-5/2, y-5/2, 5, 5);
								repaint();
							}//for	
						}catch(IOException e){}//try
						paint(gImg);
					}
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		});
		acceptThread.start();		
	}//Receiver Method
 
	@Override
	public void windowActivated(WindowEvent arg0) {
	}
	@Override
	public void windowClosed(WindowEvent arg0) {
	}
	@Override
	public void windowClosing(WindowEvent arg0) {
		System.exit(0);
	}
	@Override
	public void windowDeactivated(WindowEvent arg0) {
	}
	@Override
	public void windowDeiconified(WindowEvent arg0) {
	}
	@Override
	public void windowIconified(WindowEvent arg0) {
	}
	@Override
	public void windowOpened(WindowEvent arg0) {
	}		
}//Receiver Class