while문 무한루프로 생성 후 안에 try catch문 넣고 그 안에 서버 대기상태 넣어주기.
꺼지지않는(항상 대기중인) Server
package pack3;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServerEx01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
ServerSocket serverSocket = null;
Socket socket = null;
try {
// 한 개의 포트는 한 개의 프로그램만 사용 가능 / 7777번의 서버소켓 생성
serverSocket = new ServerSocket(7777);
while (true) {
try {
// 포트 개방
System.out.println("서버가 준비되었습니다.");
// 대기
socket = serverSocket.accept();
System.out.println("클라이언트가 연결되었습니다.");
} catch(IOException e) {
System.out.println("[에러] +" + e.getMessage());
} finally {
if(socket != null) try {socket.close();} catch(IOException e){}
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} finally {
if(socket != null) try {socket.close();} catch(IOException e) {}
if(serverSocket != null) try {serverSocket.close();} catch(IOException e) {}
}
}
}
Client
package pack3;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class TCPClientEx01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Socket socket = null;
try {
System.out.println("서버와 연결을 시작합니다.");
// 소켓은 접속이된다는 의미
// 서로 다른 컴퓨터와의 교신..
socket = new Socket("localhost", 7777);
System.out.println("서버와 연결되었습니다.");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} finally {
if(socket != null) try {socket.close();} catch(IOException e) {}
}
}
}
클라이언트에서 실행을 여러번 해도 계속 연결이 된다.
컨트롤 + c 누르면 서버 종료
package pack4;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServerEx01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
ServerSocket serverSocket = null;
Socket socket = null;
BufferedReader br = null;
BufferedWriter bw = null;
try {
serverSocket = new ServerSocket(7777);
// 무정지 만들기
while(true) {
System.out.println("서버가 준비되었습니다.");
socket = serverSocket.accept();
br = new BufferedReader(new InputStreamReader(socket.getInputStream(), "utf-8"));
bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "utf-8"));
String msg = br.readLine();
System.out.println("메세지 : " + msg);
bw.write(msg + System.lineSeparator());
// 전송 완료
bw.flush();
System.out.println("전송이 완료되었습니다.");
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} finally {
// 반드시 소켓 위에서 닫아줘야한다.
if(br != null) try {br.close();} catch(IOException e) {}
if(bw != null) try {bw.close();} catch(IOException e) {}
if(socket != null) try {socket.close();} catch(IOException e) {}
if(serverSocket != null) try {serverSocket.close();} catch(IOException e) {}
}
}
}
Client
package pack4;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class TCPClientEx01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Socket socket = null;
BufferedWriter bw = null;
BufferedReader br = null;
try {
System.out.println("서버와 연결을 시작합니다.");
socket = new Socket("localhost", 7777);
System.out.println("서버와 연결되었습니다.");
bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "utf-8"));
br = new BufferedReader(new InputStreamReader(socket.getInputStream(), "utf-8"));
bw.write("Hello Echo Server" + System.lineSeparator());
bw.flush();
System.out.println("전송이 완료되었습니다.");
// 읽기
String msg = br.readLine();
System.out.println("에코 메세지 : " + msg);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} finally {
if(bw != null) try {bw.close();} catch(IOException e) {}
if(br != null) try {br.close();} catch(IOException e) {}
if(socket != null) try {socket.close();} catch(IOException e) {}
}
}
}
계속 준비돼있음.
마리아디비 추가하여 cmd에서 클래스 실행 시킬때
java -classpath ".;C:\java\eclipse\API\mariadb-java-client-2.7.6.jar" pack1.TCPServerEx01