๐ก ์๋ฒ ์ธก ๊ธฐ๋ณธ ์ฝ๋ ์์ฑ์ ๋ชฉ์
๋คํธ์ํฌ ํ๋ก๊ทธ๋๋ฐ์ ์์ํ๋ฉด์ ๊ฐ์ฅ ๋จผ์ ๋ฐฐ์์ผ ํ ๊ฒ์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ํต์ ์ ๋๋ค.
์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์๋ค์ด๊ณ , ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ด๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํฉ๋๋ค.
์๋ฒ๋ ๋คํธ์ํฌ ํต์ ์ ํต์ฌ ์ญํ ์ ํ๋ค.
์๋ฒ ์ธก ์ฝ๋๋ฅผ ์์ฑํจ์ผ๋ก์จ ์ฐ๋ฆฌ๋ ๋คํธ์ํฌ ํต์ ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํดํ ์ ์๋ค.
์๋ฒ ์ธก ์ฝ๋์์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ ๋ฐฐ์ด๋ค.
์ด๋ ๋คํธ์ํฌ ํ๋ก๊ทธ๋๋ฐ์ ํต์ฌ ๊ธฐ๋ฅ ์ค ํ๋์ด๋ค.
์๋ฒ ์ธก ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ ๋ฐ์ํ ์ ์๋ ๋ค์ํ ์ค๋ฅ๋ฅผ ๊ฒฝํํ๊ณ , ์ด๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๊ฒ ๋๋ค.
์๋ฒ์ธก ํ๋ก๊ทธ๋จ ๋ง๋ค๊ธฐ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerFile {
public static void main(String[] args) {
// ์ค๋น๋ฌผ
// 1. ์๋ฒ ์์ผ์ด ํ์ํ๋ค
// 2. ํฌํธ ๋ฒํธ๊ฐ ํ์ํ๋ค ( 0~ 65535 ๊น์ง ์กด์ฌ)
// 2.1 ์ ์๋ ค์ง ํฌํธ ๋ฒํธ : ์ฃผ๋ก ์์คํ
๋ ๋ฒ - 0 ~ 1023 ๊น์ง ์ฌ์ฉ
// 2.2 ๋ฑ๋ก ๊ฐ๋ฅํ๋ ํ ๋ : 1024 ~ 49151 ๊น์ง
// 2.3 ๋์ / ์ฌ์ค ํฌํธ๋ฒํธ - ๊ทธ ์ธ ์์ ์ฌ์ฉ์ ์ํด ํ ๋น ๋๋ค.
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(5001);
System.out.println("์๋ฒ๋ฅผ ์์ ํฉ๋๋ค - ํฌํธ๋ฒํธ : 5001 ");
Socket socket = serverSocket.accept(); // while -->
System.out.println(">>> ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ ํ์์ต๋๋ค. <<<");
// ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ ๋ฐ๊ธฐ ์ํด์๋ ๋ญ๊ฐ ํ์ํ๋ค? --> ์คํธ๋ฆผ์ด ํ๋ค.
InputStream input = socket.getInputStream();
// ๋ฌธ์ ๊ธฐ๋ฐ ์คํธ๋ฆผ -> ๊ธฐ๋ฅ์ ํ์ฅ
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
// ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ํ์๊ฐ ํ์ ํ๋ค
String message = reader.readLine();
System.out.println("ํด๋ผ์ด์ธํธ ์ธก ๋ฉ์ธ์ง ์ ๋ฌ ๋ฐ์ : " + message);
socket.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (serverSocket != null) {
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
์คํ ๊ฒฐ๊ณผ________
์ผ๋ฐ ์ปดํจํฐ์์๋ ํฌํธ ๋ฒํธ์ ๋ฒ์๊ฐ 0๋ถํฐ 65535๊น์ง ์กด์ฌํ๋ค.
์ด๋ ์ด 65,536๊ฐ์ ํฌํธ ๋ฒํธ๋ฅผ ์๋ฏธํ๋ค. ์ด ํฌํธ ๋ฒํธ๋ค์ ์ฌ๋ฌ ๊ฐ์ง ๋ชฉ์ ์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ๋ถ๋๋ค.
์ ์๋ ค์ง ํฌํธ ๋ฒํธ๋ IANA(Internet Assigned Numbers Authority)์์ ํ ๋นํ๊ณ ๊ด๋ฆฌํ๋ฉฐ, ์ฃผ๋ก ํ์คํ๋ ์ธํฐ๋ท ์๋น์ค์ ์ฌ์ฉ๋๋ค. ๋ช ๊ฐ์ง ์ฃผ์ ํฌํธ ๋ฒํธ์ ๊ทธ ์ฌ์ฉ ์ฉ๋๋ ๋ค์๊ณผ ๊ฐ๋ค:
๊ฐ ํฌํธ ๋ฒํธ๋ ํน์ ๋คํธ์ํฌ ์๋น์ค๋ฅผ ๋ํ๋ด๋ฉฐ, ์๋ฒ๊ฐ ํน์ ์๋น์ค์ ๋ํด ๋๊ธฐํ๊ณ ์๋ ํฌํธ ๋ฒํธ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ํต์ ํ๋ค.
์๋ฅผ ๋ค์ด, ์น ์๋ฒ๋ ์ผ๋ฐ์ ์ผ๋ก ํฌํธ 80(HTTP) ๋๋ ํฌํธ 443(HTTPS)์ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋๊ธฐํ๋ค. ์ด๋ฉ์ผ ์๋ฒ๋ ํฌํธ 25(SMTP), 110(POP3), ๋๋ 143(IMAP) ๋ฑ์ ์ฌ์ฉํ์ฌ ์ด๋ฉ์ผ ์ก์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
์ผ๋ฐ ์ปดํจํฐ์์๋ ์ด 65,536๊ฐ์ ํฌํธ ๋ฒํธ๊ฐ ์์ผ๋ฉฐ, ์ด๋ค์ ์ ์๋ ค์ง ํฌํธ ๋ฒํธ, ๋ฑ๋ก๋ ํฌํธ ๋ฒํธ, ๋์ /์ฌ์ค ํฌํธ ๋ฒํธ๋ก ๊ตฌ๋ถ๋๋ค. ์ ์๋ ค์ง ํฌํธ ๋ฒํธ๋ ํ์คํ๋ ์ธํฐ๋ท ์๋น์ค์ ์ฌ์ฉ๋๋ฉฐ, ๊ฐ ํฌํธ ๋ฒํธ๋ ํน์ ๋คํธ์ํฌ ์๋น์ค๋ฅผ ๋ํ๋ธ๋ค. ์ด๋ฅผ ํตํด ๋คํธ์ํฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ก ๊ฐ์ ํต์ ์ ์ํํ๊ฒ ํ ์ ์๋ค.
[JAVA] 1:1 ์๋ฐฉํฅ ํต์ (0) | 2024.05.24 |
---|---|
[JAVA] 1:1 ๋จ๋ฐฉํฅ ํต์ (ํด๋ผ์ด์ธํธ์ธก) (0) | 2024.05.24 |
[JAVA] Socket ์ด๋? (0) | 2024.05.23 |
[JAVA] ๊ณ ์์ค ์คํธ๋ฆผ(Data/Object Stream) (0) | 2024.05.22 |
[JAVA] ์ฌ์ฉ์๋ชจ๋์ ์ปค๋๋ชจ๋ (0) | 2024.05.22 |