[ Java ] Server-Client 연결 (오픈캔버스)
글쓴이: ekdud1660 / 작성시간: 월, 2014/01/13 - 9:54오후
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
Forums:
댓글 달기