<div>지금 awt 이용한 채팅 프로그램 만들고있는데요. 책보면서하는데 책은 그냥 sysout으로 출력하는건데 저는</div> <div> </div> <div>textarea에 append하면서 할려고하거든요.</div> <div> </div> <div>그런데 책에는 main 함수 밖에다가 socket 관련 메소드를 만드는데, 문제가 뭐냐면</div> <div> </div> <div>TextField를 main 함수에 놓으면 main 함수 밖의 메소드들의 ta.append가 안먹히고,</div> <div> </div> <div>그렇다고 Socket함수를 안에다 놓을 수도 없구요...</div> <div> </div> <div>또, Frame 함수들을 main밖에다 놓자니 정의가 안되구요...</div> <div> </div> <div>뭘 안에 놓고 뭘 밖에 놔야될지 모르겠어요 ㅠㅠ</div> <div> </div> <div>아래는 코드입니다.</div> <div> </div> <div>public class server implements Runnable {</div> <div> ServerSocket serverSocket;<br> Thread[] threadArr;</div> <div> public static void main(String[] args) {</div> <div> <strong>TextField tf = new TextField();<br> TextArea ta = new TextArea(); // 여기서 얘들 위치를 main 안에다 놔둬야 하나요?</strong><br> Frame f = new Frame("Chatting Test");<br> <br> f.setSize(300, 200);<br> f.setLayout(new BorderLayout());<br> f.addWindowListener(new EventHandler());<br> <br> <br> f.add(ta,"Center");<br> f.add(tf,"South");<br> <br> tf.addActionListener(new ActionListener(){<br> public void actionPerformed(ActionEvent e){<br> ta.append(tf.getText()+"\n");<br> tf.setText("");<br> tf.requestFocus();<br> }<br> });<br> ta.setEditable(false);<br> f.setVisible(true);<br> <br> <br> server server1 = new server(5);<br> server1.start();<br> }<br> public server(int num){<br> try{<br> serverSocket = new ServerSocket(7777); //포트 binding<br> <strong>ta.append("서버가 준비되었습니다.\n"); // 현 상태로는 ta가 지역변수다 보니 얘들이 인식을 못하네요..</strong><br> } catch(Exception e){<br> e.printStackTrace();<br> }<br> }<br> <br> public void start(){<br> for(int i=0; i<threadArr.length;i++){<br> threadArr[i] = new Thread(this);<br> threadArr[i].start();<br> }<br> }<br> <br> public void run(){<br> while(true){<br> try{<br> ta.append("연결 요청을 기다립니다.\n");<br> Socket socket = serverSocket.accept(); //소켓 생성<br> ta.append(socket.getInetAddress()+"로 부터 연결요청이 들어왔습니다.\n");<br> <br> ta.append("getPort() : "+socket.getPort()+"\n");<br> ta.append("getLocalPort:"+socket.getLocalPort()+"\n");<br> <br> OutputStream out = socket.getOutputStream();<br> DataOutputStream dos = new DataOutputStream(out); //소켓의 출력 스트림<br> <br> dos.writeUTF("[Notice] Test Message1 from Server");<br> ta.append("데이터를 전송했습니다.\n");<br> <br> dos.close();<br> socket.close();<br> } catch(IOException e){<br> e.printStackTrace();<br> }<br> }<br> }<br>}</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.