ServerSocket, Socket
Socket socket = new Socket(serverIp, port);
socket.getOutputStream(); // 출력 스트림
socket.getInputStream(); // 입력 스트림
ServerSocket serverSocket = new ServerSocket(port);
// 접속을 대기하다가 클라이언트 접속하면 실행된다. 실행 후 일반 Socket을 반환한다
serverSocket.accept();
// 반환받은 일반 socket으로 실제 클라이언트와 통신하게 된다
// ServerSocket은 대표 전화, Socket은 상담원 전화기(실제 고객과 통신)
package step1;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class NetServer1 {
public void go() throws IOException {
ServerSocket serverSocket = new ServerSocket(5432);
System.out.println("**NetServer1 실행**");
// ServerSocket의 accept(): 클라이언트 접속을 대기하다가 접속하면 그 클라이언트와 통신할 일반 Socket을 반환
Socket socket = serverSocket.accept();
System.out.println("**client가 접속함**");
// 서버에서 접속한 클라이언트로 메세지를 출력한다
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println("즐거운 목요일 오후입니다");
out.close();
socket.close();
serverSocket.close();
System.out.println("**NetServer1 클라이언트에게 메세지 출력 후 종료**");
}
public static void main(String[] args) {
NetServer1 server = new NetServer1();
try {
server.go();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package step1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
import common.IP;
public class NetClient1 {
public void go() throws UnknownHostException, IOException {
Socket socket = new Socket(IP.LOCAL, 5432);
System.out.println("**NetClient가 서버에 접속함**");
// InputStreaReader: 8bit 스트림(바이트스트림)을 16bit 스트림(문자스트림)으로 변환
InputStreamReader ir = new InputStreamReader(socket.getInputStream());
BufferedReader br = new BufferedReader(ir);
String message = br.readLine();
System.out.println("서버가 보낸 메세지:" + message);
br.close();
socket.close();
System.out.println("**NetClient 종료**");
}
public static void main(String[] args) {
NetClient1 client = new NetClient1();
try {
client.go();
} catch (IOException e) {
e.printStackTrace();
}
}
}