본문 바로가기

컴퓨터/언어,프로그래밍

채팅프로그램 Client

채팅프로그램 Client

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.CardLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;


public class GUIChatClient extends Frame implements ActionListener, Runnable {
 Button bt_exit; //종료
 Button bt_send; //전송
 Button bt_connect; //서버로 연결
 TextArea ta_list;
 TextField ip; //서버 ip
 TextField name; //대화명
 TextField input; //채팅 입력
 Socket client;
 BufferedReader br; //입력
 PrintWriter pw; //출력
 String server_ip; //서버ip주소
 final int port = 5005; //서버 포트 번호
 CardLayout ca; // 카드레이아웃
 
 public GUIChatClient(){
  setTitle("채팅 클라이언트 ver1.0");
  ca = new CardLayout();
  setLayout(ca);
  Panel connect = new Panel(); //접속화면
  connect.setLayout(new BorderLayout());
  Panel chat = new Panel(); //채팅화면
  chat.setLayout(new BorderLayout());
  bt_connect = new Button("서버접속");
  bt_connect.addActionListener(this);
  ip = new TextField("127.0.0.1",15); //자신의 ip,15글자
  name= new TextField("축합격",15);
  Panel connect_sub = new Panel(); //접속창의 하위 화면
  connect_sub.add(new Label("서버 아이피"));
  connect_sub.add(ip);
  connect_sub.add(new Label("대화명"));
  connect_sub.add(name);
  connect.add(new Label("채팅 접속 화면", Label.CENTER),BorderLayout.CENTER);
  connect.add(connect_sub, BorderLayout.CENTER);
  connect.add(bt_connect, BorderLayout.SOUTH);
  
  //채팅창 화면 구성
  ta_list = new TextArea(); //채팅화면 보여주는 부분
  input = new TextField("",25);// 채팅 입력
  bt_exit = new Button("종료");
  bt_send = new Button("전송");
  bt_exit.addActionListener(this);
  bt_send.addActionListener(this);
  input.addActionListener(this);
  Panel chat_sub = new Panel(); //채팅창 하위 패널
  chat_sub.add(input); //채팅 입력을 붙인다
  chat_sub.add(bt_send);
  chat_sub.add(bt_exit);
  
  chat.add(new Label("채팅프로그램 v1.0", Label.CENTER), BorderLayout.CENTER);
  chat.add(ta_list, BorderLayout.CENTER);
  chat.add(chat_sub, BorderLayout.SOUTH);
  add(connect,"접속창"); //카드레이아웃에 접속창 붙이기
  add(chat, "채팅창"); //카드레이아웃에 채팅창 붙이기
  ca.show(this, "접속창"); //첫화면은 접속창이다
  setBounds(250,250,300,300);
  setVisible(true);
 }
 @Override
 public void actionPerformed(ActionEvent e) {
  try {
   Object obj = e.getSource();
   if(obj == bt_connect){
    server_ip = ip.getText();
    Thread th = new Thread(this);
    th.start();
    ca.show(this, "채팅창");
   }//end if
   else if(obj == bt_exit){
    System.exit(0);
   }//else
   else if(obj == bt_send || obj == input){
    String msg = input.getText(); //채팅 입력
    pw.println(msg); //채팅 내용 전송
    pw.flush(); //즉시 전송
    input.setText(""); // 채팅 입력란 지우기
    input.requestFocus();
   }//else
  } catch (Exception ex) {
   ex.printStackTrace();
  }
 }

 @Override
 public void run() { //채팅 내용 보여주는 기능
  try {
   System.out.println("밥ㅎㅎ");
   client = new Socket(server_ip, 5005);//소켓 생성(서버로 접속)
   InputStream is = client.getInputStream(); //입력
   OutputStream os = client.getOutputStream(); //출력
   br = new BufferedReader(new InputStreamReader(is));
   pw = new PrintWriter(new OutputStreamWriter(os));
   String msg = name.getText();//대화명 얻기
   pw.println(msg); //대화명 전송
   pw.flush(); //즉시 전송
   input.requestFocus(); //채팅 입력란에 커서를 놓는다.
   while(true){
    msg = br.readLine(); //채팅 내용받기
    ta_list.append(msg+"\n");
   }//end while
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 public static void main(String[] args) {
  new GUIChatClient();

 }

}


제주삼다수, 2L,... 오뚜기 진라면 매운... 상하목장 유기농 흰... 남양 프렌치카페 카... 고려인삼유통 홍삼 ... 종근당건강 오메가3... 요이치 카링 유무선...