목차
I. 프로그램 실행
II. 프로그램 분석
II 프로그램 소스
II. 프로그램 분석
II 프로그램 소스
본문내용
ayout(4, 0));
label1.setText("Server IP");
panel1.add(label1);
textField1.setColumns(20);
panel1.add(textField1);
label2.setText("Port");
panel1.add(label2);
textField2.setColumns(8);
panel1.add(textField2);
label3.setText("ID");
panel1.add(label3);
textField3.setColumns(20);
panel1.add(textField3);
button1.setLabel("Connect");
button1.addActionListener(this);
panel1.add(button1);
button2.setLabel("Disconnect");
button2.addActionListener(this);
panel1.add(button2);
textField4.setText("input");
textField4.setColumns(40);
textField4.setEditable (false);
textField4.addActionListener(this);
frame.add(panel1, BorderLayout.NORTH);
panel2.setLayout(new BorderLayout());
panel2.add(textArea1, BorderLayout.CENTER);
panel2.add(textField4, BorderLayout.SOUTH);
frame.add(panel2, BorderLayout.CENTER);
frame.pack();
frame.setVisible (true);
}//
protected DataInputStream dataIn;
protected DataOutputStream dataOut;
protected Thread listener;
// method : start()
public synchronized void start() throws IOException {
if(listener == null) {
Socket socket = new Socket(host, port);
try{
dataIn = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
dataOut = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
dataOut.writeUTF("##name##" + id);
dataOut.flush();
}catch(IOException ie) {
socket.close();
throw ie;
}
listener = new Thread(this);
listener.start();
}
}
// method : stop()
public synchronized void stop() throws IOException {
if(listener != null) {
listener.interrupt();
listener = null;
dataOut.close();
}
}
// method : run()
public void run() {
try {
while(!Thread.interrupted()) {
String line = dataIn.readUTF();
textArea1.append(line+"\n");
}
}catch(IOException ie) {
handleIOException(ie);
}finally{
connectok = false;
}
}
// method : handleIOException()
protected synchronized void handleIOException (IOException ex) {
if(listener != null) {
textArea1.append(ex+"\n");
frame.validate();
if(listener != Thread.currentThread())
listener.interrupt();
listener = null;
try{
dataOut.close();
}catch(IOException ignored) {
}
}
}
protected boolean connectok = false;
// method : actionPerformed()
public void actionPerformed(ActionEvent event) {
try{
if(!connectok && event.getActionCommand().equals("Connect")) {
host = textField1.getText();
port = Integer.parseInt(textField2.getText());
id = textField3.getText();
textArea1.append("press Connect button\n");
start();
textField4.setEditable (true);
textField4.setText("");
connectok = true;
}else if (connectok && event.getActionCommand().equals(textField4.getText()) ) {
textField4.selectAll();
dataOut.writeUTF("<"+ id +"> : " + event.getActionCommand());
dataOut.flush();
textField4.setText("");
}else if(connectok && event.getActionCommand().equals("Disconnect")){
textArea1.append("press Disconnect button\n");
stop();
connectok = false;
}
}catch(IOException ex) {
handleIOException(ex);
}
}
// method : main()
public static void main(String args[]) {
ChatClient chat = new ChatClient();
}
}
label1.setText("Server IP");
panel1.add(label1);
textField1.setColumns(20);
panel1.add(textField1);
label2.setText("Port");
panel1.add(label2);
textField2.setColumns(8);
panel1.add(textField2);
label3.setText("ID");
panel1.add(label3);
textField3.setColumns(20);
panel1.add(textField3);
button1.setLabel("Connect");
button1.addActionListener(this);
panel1.add(button1);
button2.setLabel("Disconnect");
button2.addActionListener(this);
panel1.add(button2);
textField4.setText("input");
textField4.setColumns(40);
textField4.setEditable (false);
textField4.addActionListener(this);
frame.add(panel1, BorderLayout.NORTH);
panel2.setLayout(new BorderLayout());
panel2.add(textArea1, BorderLayout.CENTER);
panel2.add(textField4, BorderLayout.SOUTH);
frame.add(panel2, BorderLayout.CENTER);
frame.pack();
frame.setVisible (true);
}//
protected DataInputStream dataIn;
protected DataOutputStream dataOut;
protected Thread listener;
// method : start()
public synchronized void start() throws IOException {
if(listener == null) {
Socket socket = new Socket(host, port);
try{
dataIn = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
dataOut = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
dataOut.writeUTF("##name##" + id);
dataOut.flush();
}catch(IOException ie) {
socket.close();
throw ie;
}
listener = new Thread(this);
listener.start();
}
}
// method : stop()
public synchronized void stop() throws IOException {
if(listener != null) {
listener.interrupt();
listener = null;
dataOut.close();
}
}
// method : run()
public void run() {
try {
while(!Thread.interrupted()) {
String line = dataIn.readUTF();
textArea1.append(line+"\n");
}
}catch(IOException ie) {
handleIOException(ie);
}finally{
connectok = false;
}
}
// method : handleIOException()
protected synchronized void handleIOException (IOException ex) {
if(listener != null) {
textArea1.append(ex+"\n");
frame.validate();
if(listener != Thread.currentThread())
listener.interrupt();
listener = null;
try{
dataOut.close();
}catch(IOException ignored) {
}
}
}
protected boolean connectok = false;
// method : actionPerformed()
public void actionPerformed(ActionEvent event) {
try{
if(!connectok && event.getActionCommand().equals("Connect")) {
host = textField1.getText();
port = Integer.parseInt(textField2.getText());
id = textField3.getText();
textArea1.append("press Connect button\n");
start();
textField4.setEditable (true);
textField4.setText("");
connectok = true;
}else if (connectok && event.getActionCommand().equals(textField4.getText()) ) {
textField4.selectAll();
dataOut.writeUTF("<"+ id +"> : " + event.getActionCommand());
dataOut.flush();
textField4.setText("");
}else if(connectok && event.getActionCommand().equals("Disconnect")){
textArea1.append("press Disconnect button\n");
stop();
connectok = false;
}
}catch(IOException ex) {
handleIOException(ex);
}
}
// method : main()
public static void main(String args[]) {
ChatClient chat = new ChatClient();
}
}
추천자료
자바(java) 가로세로퍼즐
자바(Java)와 닷넷(.net)에 대한 차이점 비교
[JAVA][자바]JAVA(자바)의 특징과 JAVA(자바)를 이용한 인터넷강의, JAVA(자바)를 이용한 WBI...
[자바][JAVA][자바스크립트]자바(JAVA)의 정의, 자바(JAVA)의 특징, 자바(JAVA)의 역사, 자바...
[자바][JAVA][프로그래밍언어]자바(JAVA)와 컴퓨터시스템, 자바(JAVA)의 개념, 자바(JAVA)의 ...
[자바][JAVA][자바(JAVA) 문장표현][자바(JAVA) 폼편집][자바 Class선언]자바(JAVA) 개념, 자...
[JAVA][자바][문자출력][Class선언][CGI연계][프로그래밍언어]JAVA(자바)의 의미, JAVA(자바)...
자바스크립트(JavaScript)의 정의와 특징, 자바스크립트(JavaScript)의 장단점, 자바스크립트...
[자바][JAVA][자바스크립트]자바(JAVA)의 의미, 자바(JAVA)의 특징, 자바(JAVA)의 유래, 자바...
자바(Java)의 특징, 자바(Java)의 기술, 자바(Java)의 장점, 자바스크립트(JavaScript)의 정...