๋คํธ์ํฌ๋? ๋ค๋ฅธ ์ฅ์น๋ก ๋ฐ์ดํฐ๋ฅผ ์ด๋์ํฌ ์ ์๋ ์ปดํจํฐ๋ค๊ณผ ์ฃผ๋ณ ์ฅ์น๋ค์ ์งํฉ์ด๋ค. ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ๋ชจ๋ ์ฅ์น๋ค์ "๋
ธ๋"๋ผ๊ณ ํ๋ค. ๋ค๋ฅธ ๋
ธ๋์๊ฒ ํ๋ ์ด์์ ์๋น์ค๋ฅผ ์ ๊ณตํด์ฃผ๋ ๋
ธ๋๋ฅผ "ํธ์คํธ"๋ผ๊ณ ํ๋ค.
์ฌ์ง ์ถ์ฒ : https://shlee0882.tistory.com/110
์ธํฐ๋ท ๊ธฐ๋ฐ์ ํ์ค ๋ชจ๋ธ์ ์ฃผ๋ก TCP/IP ๊ณ์ธต ๋ชจ๋ธ์ ์ฃผ๋ก ์ฌ์ฉํ๋ค. ์๋ฐ์์ ์ด์ผ๊ธฐํ๋ ๋คํธ์ํฌ ํ๋ก๊ทธ๋๋ฐ์ TCP/IP ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค.
TCP์ UDP๋ ์์ OSI 7๊ณ์ธต ๋ชจํ์์ ๋ณด๋ ๊ฒ๊ณผ ๊ฐ์ด ์ ์ก๊ณ์ธต์์ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ์ด๋ค.
TCP
TCP(Transimission Control Protocol)๋ ์ ๋ขฐํ ์ ์๋ ํ๋กํ ์ฝ๋ก์, ๋ฐ์ดํฐ๋ฅผ ์๋์ธก๊น์ง ์ ๋๋ก ์ ๋ฌ๋์๋์ง ํ์ธ ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์์ผ๋ก์จ ๋ฐ์ดํฐ์ ์ก์์ ์ํ๋ฅผ ์ ๊ฒํ๋ค.
UDP
UDP(User Datagram Protocol)์ ์ ๋ขฐํ ์ ์๋ ํ๋กํ ์ฝ๋ก์, ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ธฐ๋ง ํ๊ณ ํ์ธ ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ง ์๊ธฐ ๋๋ฌธ์ ์ ๋๋ก ์ ๋ฌํ๋์ง ํ์ธํ์ง ์๋๋ค.
TCP๋ ์ ํ, UDP๋ ๋ฌธ์๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์๋ฐ ํ๋ก๊ทธ๋จ์ ์์ผ์ด๋ผ๋ ๊ฐ๋
์ ํตํด์ ๋คํธ์ํฌ ํต์ ์ ํ๋ค. ์์ผ์ ๋คํธ์ํฌ ๋ถ๋ถ์ ๋ ๋ถ๋ถ์ ๋ํ๋ด๋ฉฐ, ์ค์ ๋ฐ์ดํฐ๊ฐ ์ด๋ ํฅ ์ ์ก๋๋์ง ์๊ดํ์ง ์๊ณ , ์ฝ๊ธฐ/์ฐ๊ธฐ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค. ๋คํธ์ํฌ ๊ณ์ธต๊ณผ ์ ์ก๊ณ์ธต์ด ์บก์ํ ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋๊ฐ์ ๊ณ์ธต์ ์ ๊ฒฝ ์ฐ์ง ์๊ณ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์๋ค.
์๋ฐ๋ ์ด์์ฑ๊ณผ ํฌ๋ก์ค ํ๋ซํผ ๋คํธ์ํฌ ํ๋ก๊ทธ๋จ์ ์ํด์ ์์ผ์ ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ง๋ค์๋ค. TCP/IP ๊ณ์ธต์ TCP๋ฅผ ์ง์ํ๊ธฐ ์ํด์ Socket, ServerSocket ํด๋์ค๋ฅผ ์ ๊ณตํ๊ณ ์๋ค. ํด๋ผ์ด์ธํธ๋ Socket ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ TCP ์๋ฒ์ ์ฐ๊ฒฐ์ ์๋ํ๋ค. ์๋ฒ๋ SocketServer ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ TCP ์ฐ๊ฒฐ์ ์ฒญ์ทจํ์ฌ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์ฐ๊ฒฐ๋๋ค.
URL์ด๋? Uniform Resource Locator์ ์ฝ์๋ก ์ธํฐ๋ท์์ ์ ๊ทผ ๊ฐ๋ฅํ ์์์ ์ฃผ์๋ฅผ ํํํ ์ ์๋ ํ์์ ๋งํ๋ค.
// client
package java_pro3;
import java.io.PrintWriter;
import java.net.Socket;
public class NetworkTest2Client {
public static void main(String[] args) {
// client
try {
Socket socket = new Socket("192.168.0.24", 7777);
PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
out.println("Hi I'm yjh + \n"); // ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์ก
out.close();
socket.close();
} catch (Exception e) {
System.out.println("client err : "+e);
}
}
}
// Server
package java_pro3;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class NetworkTest2Server {
public static void main(String[] args) {
// socket ํต์ : ์ปดํจํฐ ๊ฐ TCP/IP ํ๋กํ ์ฝ ๊ธฐ๋ฐ ํต์ ์ฉ ํด๋์ค
ServerSocket ss = null;
/*
for (int i = 0; i <= 65535; i++) {
try {
ss = new ServerSocket(i);
ss.close();
} catch (Exception e) {
System.out.println(i + "๋ฒ port ๋ฒํธ๋ ์ฌ์ฉ์ค");
}
}
System.out.println("๋ด ์ปดํจํฐ๊ฐ ์ฌ์ฉํ๊ณ ์๋ port(0~65535) ํ์ธ ์ข
๋ฃ");
*/
// ๋ ๋์ ์ปดํจํฐ ์ ์ ํ์ธ : client / server ๊ตฌ์กฐ
Socket socket = null; // ์ปดํจํฐ ๊ฐ์ ์ค์ง์ ์ธ ํต์ ์ ์ํ ํด๋์ค
try {
ss = new ServerSocket(7777); // ํฌํธ๋ฒํธ๋ 1024๋ฒ ์ดํ์ ๋น์ฌ์ฉ์ค์ธ ์ซ์๋ฅผ ์ฌ์ฉ
System.out.println("์๋ฒ ์๋น์ค ์ค...");
socket = ss.accept();
System.out.println("์ ์์ฌ ์ ๋ณด : "+socket.toString());
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));
String data = reader.readLine();
System.out.println("์์ ์๋ฃ : "+data);
reader.close();
socket.close();
ss.close();
} catch (Exception e) {
System.out.println("์๋ฒ ์๋ฌ : " + e);
}
}
}
์ถ๋ ฅ
cmd (๋ด ์ปดํจํฐ๊ฐ ์ฌ์ฉํ๊ณ ์๋ port)
์ฐธ๊ณ ํ๋ฉด ์ข์ ๋์์