//서버
package chap6;
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
public class ChatingServer extends Frame implements ActionListener{
private TextField enter;
private TextArea display;
private DatagramPacket sendPacket, receivePacket;
private DatagramSocket socket;
public ChatingServer(){
super("서버");
enter = new TextField("메세지를 입력하세요");
enter.addActionListener(this);
add(enter,BorderLayout.NORTH);
display = new TextArea();
add(display, BorderLayout.CENTER);
addWindowListener(new WinListener());
setSize(400,300);
setVisible(true);
try{
socket = new DatagramSocket(5000);
}catch(SocketException se){
se.printStackTrace();
System.exit(1);
}
}
//패킷이 올때까지 기다릴 동안 상대방에서 온 패킷을 받는다.
public void waitForPackets(){
while(true){
try{
byte data[] = new byte[100];
receivePacket = new DatagramPacket(data, data.length);
socket.receive(receivePacket);
display.append(receivePacket.getPort() + ": " + new String(receivePacket.getData()));
display.append("\n");
}catch(IOException io){
display.append(io.toString() + "\n");
io.printStackTrace();
}
}
}
//엔터가 발생할때 생기는 이벤트
public void actionPerformed(ActionEvent e) {
try {
String s = e.getActionCommand();
enter.setText("");
display.append("me" + ": " +e.getActionCommand() +"\n");
byte data[] = s.getBytes();
sendPacket = new DatagramPacket(data, data.length,InetAddress.getLocalHost(),4000);
socket.send(sendPacket);
}catch(IOException exception) {
display.append(exception.toString() + "\n");
exception.printStackTrace();
}
}
public static void main(String args[]){
ChatingServer s = new ChatingServer();
s.waitForPackets();
}
class WinListener extends WindowAdapter{
public void windowClosing(WindowEvent we) {
System.exit(0);
}
}
}
//클라이언트
package chap6;
import java.io.*;
import java.net.*;
import chap6.ChatingServer.WinListener;
import java.awt.*;
import java.awt.event.*;
public class ChatingClinet extends Frame implements ActionListener{
private TextField enter;
private TextArea display;
private DatagramPacket sendPacket, receivePacket;
private DatagramSocket socket;
public ChatingClinet(){
super("클라이언트");
enter = new TextField("메세지를 입력하세요");
enter.addActionListener(this);
add(enter,BorderLayout.NORTH);
display = new TextArea();
add(display, BorderLayout.CENTER);
addWindowListener(new WinListener());
setSize(400,300);
setVisible(true);
//Datagram소켓생성
try{
socket = new DatagramSocket(4000);
}catch(SocketException se){
se.printStackTrace();
System.exit(1);
}
}
public void waitForPackets(){
while(true){
try{
byte data[] = new byte[100];
receivePacket = new DatagramPacket(data, data.length);
socket.receive(receivePacket);
display.append(receivePacket.getPort() + ": " + new String(receivePacket.getData()));
display.append("\n");
}catch(IOException io){
display.append(io.toString() + "\n");
io.printStackTrace();
}
}
}
//엔터가 발생할때 생기는 이벤트
public void actionPerformed(ActionEvent e) {
try {
String s = e.getActionCommand();
enter.setText("");
display.append("me" + ": " + e.getActionCommand() +"\n");
byte data[] = s.getBytes();
sendPacket = new DatagramPacket(data, data.length,InetAddress.getLocalHost(),5000);
socket.send(sendPacket);
}catch(IOException exception) {
display.append(exception.toString() + "\n");
exception.printStackTrace();
}
}
public static void main(String args[]){
ChatingClinet s = new ChatingClinet();
s.waitForPackets();
}
class WinListener extends WindowAdapter{
public void windowClosing(WindowEvent we) {
System.exit(0);
}
}
}
//결과

'JAVA' 카테고리의 다른 글
자바채팅프로그래밍 -다중채팅 (0) | 2019.11.10 |
---|---|
자바채팅프로그래밍 -UDP소켓이용 계산기 (0) | 2019.11.03 |
자바채팅프로그래밍 - UDP소켓이용하여 날짜 출력 (0) | 2019.11.03 |
자바채팅 프로그래밍 - 호스트 파일 정보 출력 , 객체구분 (0) | 2019.10.11 |
자바채팅 프로그래밍 - 호스트 정보 알기 (0) | 2019.10.11 |