반응형
클라이언트 기능 모듈 개발하기!
1. 채팅 서버를 만든 것 처럼 이클립스에서 new -> other -> javaFx검색 -> javaFxProject를 만듭니다.
2. Main class를 작성합니다.
package application;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.control.TextArea;
import javafx.stage.Stage;
public class Main extends Application {
Socket socket;
TextArea textArea;
// 클라이언트 프로그램 동작 메소드 (어떤 IP로 , 어떤 port로 접속할지 정해줌)
public void startClient(String IP, int port) {
// 스레드 객체 생성!
Thread thread = new Thread() {
public void run() {
try {
// socket 초기화
socket = new Socket(IP, port);
receive();
} catch (Exception e) {
// 오류가 생긴다면
if (!socket.isClosed()) {
stopClient();
System.out.println("[서버 접속 실패]");
Platform.exit();
}
}
}
};
thread.start();
}
// 클라이언트 프로그램 종료 메소드
public void stopClient() {
try {
if(socket != null && !socket.isClosed()) {
socket.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
// 서버로부터 메시지를 전달받는 메소드
public void receive() {
// 서버 프로그램으로부터 메시지를 계속 전달 받을 수 있도록
while (true) {
try {
// 서버로부터 메시지를 전달 받을 수 있도록
InputStream in = socket.getInputStream();
byte[] buffer = new byte[512];
int length = in.read(buffer);
if (length == -1)
throw new IOException();
String message = new String(buffer, 0, length, "UTF-8");
Platform.runLater(() -> {
// textArea는 GUI요소중 하나로 화면에 어떠한 메시지를 주고 받았는지 출력해 주는 요소.
textArea.appendText(message);
});
} catch (Exception e) {
stopClient();
break;
}
}
}
// 서버로 메시지를 전송하는 메소드
public void send(String message) {
Thread thread = new Thread() {
public void run() {
try {
OutputStream out = socket.getOutputStream();
byte[] buffer = message.getBytes("UTF-8");
out.write(buffer);
out.flush();
} catch (Exception e) {
stopClient();
}
}
};
thread.start();
}
// 실제로 프로그램을 동작시키는 메서드
@Override
public void start(Stage primaryStage) {
}
// 프로그램의 진입점.
public static void main(String[] args) {
launch(args);
}
}
반응형
'2020 > JAVAFX 채팅 프로그램 만들기' 카테고리의 다른 글
JavaFx 채팅프로그램 만들기 #5 (2) | 2020.03.15 |
---|---|
JavaFx 채팅프로그램 만들기 #3 (0) | 2020.03.15 |
javafx 채팅 프로그램 만들기 #2 (0) | 2020.03.15 |
JAVA FX를 이용하여 채팅프로그램 만들기 #1 (0) | 2020.03.15 |