
๐ฅ ๋ฌธ์
์๋ฐ ์์ผ ํต์ ์์ Gson ๋ผ์ด๋ธ๋ฌ๋ฆฌ + BufferedWriter ์ฌ์ฉ ์ค host ๊ด๋ จ ์๋ฌ ๋ฐ์ํจ
์๋ฐ์์ ๋ฐ๋ชฌ์ ๋ง๋ค๊ณ , ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ค ํ๋๋ฐ ํต์ ์ด ๋์ง ์๋ ๋ฌธ์
๐ ์์ธ
๊ฒฐ๊ตญ TCP/IP ๋ฌธ์ ์๊ณ , ์๋ฒ๋ IPv4, ํด๋ผ์ด์ธํธ(๋)๋ IPv6๋ก ์ค์ ๋์ด ์์ด์ ํธํ์ด ์ ๋ ๊ฒ์ด์๋ค.
๋คํธ์ํฌ ๋ด๋น์๊ฐ ์๋ฒ์ TCP/IP ๋ฒ์ ์ IPv4๋ก ์ค์ ํ๋๋ฐ ๋๋ ๊ทธ๋ฅ Runnable JAR์ ์คํํด์ IPv6๋ก ๋์ํ ๊ฒ์ด ์์ธ์ด๋ค.
โญ ํด๊ฒฐ๋ฒ
WSL์ nohup ๋ช ๋ น์ด๋ก JVM ์ต์ ์ถ๊ฐํ๋ฉด ํด๊ฒฐ ๊ฐ๋ฅ
nohup java -Djava.net.preferIPv4Stack=true -Dpath="๊ฒฝ๋ก" -jar ์ด๋ฆ.jar >> server.log 2>&1 &
- nohup โ ํฐ๋ฏธ๋ ์ข ๋ฃ ํ์๋ ์คํ ์ง์
- java -Djava.net.preferIPv4Stack=true โ IPv4 ์ฐ์ ์ฌ์ฉ ์ค์
- -Dpath="๊ฒฝ๋ก" โ path ํ๊ฒฝ ๋ณ์๋ฅผ "๊ฒฝ๋ก"๋ก ์ค์
- -jar ์ด๋ฆ.jar โ ์คํํ JAR ํ์ผ ์ง์
- >> server.log 2>&1 โ ์ถ๋ ฅ์ server.log ํ์ผ์ ์ ์ฅ (ํ์ค ์ถ๋ ฅ & ์๋ฌ ํฌํจ)
- & โ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ
๐ฆ TMI
์ฌ๊ธฐ์๋ถํฐ๋ ๋ ํผ์ ์ฝ์ผ๋ ค๊ณ ์ ๋ฆฌํ ๊ฒ
๋ฏธ๋์ ๋๋ฅผ ์ํด ์ด์ฌํ ๋ช
๋ น์ด ์ฐพ์์ ์ ๋ฆฌํด ํด ๋์
๋๋ ์ ํํ ์ดํด๋ฅผ ์ํด ๊ถ๊ธํ ๊ฒ์ ์ฐพ์๋ด
โ ์ง๊ธ JAR ํ์ผ์ด ํ๊ณ ์๋ ์ผ์ด ์ ํํ ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ๋์ํด?
JAR ํ์ผ๋ก ์คํ๋ Java ์๋ฒ๊ฐ ํน์ ํฌํธ๋ฅผ ์ ์ ํ๋ฉด์ ์๋ํ๋ ๋ฐฉ์์ด๋ค. ์์ผ ํต์ (ServerSocket)์ ์ด์ด ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋๊ธฐํ๋ ์ํ์์ nohup ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ฉด์ ๋ก๊ทธ๊ฐ ์ ์ฅ์ด ๋๊ณ ,
-Djava.net.preferIPv4Stack=true ์ต์ ์ด ์ ์ฉ๋์ด IPv4 ํ๊ฒฝ์์ ๋์ํ๋ ์๋ฆฌ์ด๋ค.
1. ์๋ฒ ์ญํ
- ServerSocket์ ์ฌ์ฉํด ํน์ ํฌํธ๋ฅผ ์ ์
- ํด๋ผ์ด์ธํธ(์: ์๋ฐ์คํฌ๋ฆฝํธ)์์ ๋ฐ์ดํฐ ์์ฒญ์ ๋ฐ์ ์ค๋น
- JSON ๋ฐ์ดํฐ๋ฅผ Gson์ ์ฌ์ฉํด ํ์ฑํจ
2. ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ์ค
- nohup์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํฐ๋ฏธ๋์ ๋ซ์๋ ๊ณ์ ์๋ํ ์ ์๊ฒ ํจ
- server.log์ ์คํ ๋ก๊ทธ๊ฐ ์ ์ฅ๋จ
โ TCP/IP ๋ฒ์ ์ IPv4๋ก ์ค์ ํ๋ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ
ํ ๋ฒ๋ง ์คํํ ๊ฑฐ๋ฉด? ๋ฐฉ๋ฒ 1 (-Djava.net.preferIPv4Stack=true ์ต์ ์ถ๊ฐํด์ ์คํ)
java -Djava.net.preferIPv4Stack=true -jar myapp.jar
์๋ฐ ์ฝ๋์์ ์ค์ ํ๊ณ ์ถ๋ค๋ฉด? ๋ฐฉ๋ฒ 2 (System.setProperty() ์ฌ์ฉ)
public class Main {
public static void main(String[] args) {
System.setProperty("java.net.preferIPv4Stack", "true");
// ๊ธฐ์กด ์ฝ๋ ์คํ
}
}
ํญ์ IPv4๋ก ์คํํ๊ณ ์ถ๋ค๋ฉด? ๋ฐฉ๋ฒ 3 (ํ๊ฒฝ ๋ณ์ ์ค์ )
๋ง์ฝ ์คํํ ๋๋ง๋ค -Djava.net.preferIPv4Stack=true๋ฅผ ์ถ๊ฐํ๋ ๊ฒ ๊ท์ฐฎ๋ค๋ฉด, ํ๊ฒฝ ๋ณ์๋ก ์ค์ ํ๋ฉด ๋จ.
ํ๊ฒฝ ๋ณ์ ํธ์ง๊ธฐ ์ด๊ณ ์ ์์คํ ๋ณ์ ์ถ๊ฐ
๋ณ์ ์ด๋ฆ: JAVA_TOOL_OPTIONS
๋ณ์ ๊ฐ: -Djava.net.preferIPv4Stack=true
์ ์ฉ ํ ์ฌ๋ถํ
ํ๋ฉด Java ์คํํ ๋ ์๋์ผ๋ก IPv4 ์ฐ์ ์ฌ์ฉํ๋ค.
ํน์ ๋ชฐ๋ผ์ ๊ด๋ จ ์๋ฌ๋ ๊ฐ์ด ๊ฒ์ํจ
- java.net.UnknownHostException: somehost DNS ์ค์ ๋ฌธ์ (์ฌ๋ฐ๋ฅธ ํธ์คํธ๋ช ์ฌ์ฉํ์)
- java.net.BindException: Address already in use ํฌํธ ์ถฉ๋
- java.net.SocketException: Connection reset ํด๋ผ์ด์ธํธ-์๋ฒ IP ๋ถ์ผ์น
โ ์๋ฒ/ํด๋ผ์ด์ธํธ์์ ๋คํธ์ํฌ ๊ด๋ จ ์๋ฌ ๋ฌ์ ๋ ๋์ฒ๋ฒ
1. ํฌํธ๊ฐ ์ด๋ฏธ ์ ์ ๋ ์ํ์ธ์ง ํ์ธํ์! (ํฌํธ ์ถฉ๋์ธ๊ฐ?)
- ์ด๋ป๊ฒ ํฌํธ ๋ฌธ์ ์ธ์ง ์๋๊ฐ?
- ์๋ฒ์์ ์ด๋ฏธ ์ฌ์ฉ ์ค์ธ ํฌํธ์ ๋ฐ์ธ๋ฉํ๋ ค ํ๋ฉด BindException ๋ฐ์ํจ
โ
์๋ ๋ช
๋ น์ด๋ก JAR ํ์ผ์ด ์ ์ ํ ํฌํธ๋ฅผ ํ์ธํ๋ ๋ฒ
netstat -tulnp | grep java
- netstat : ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ํ ํ์ธ
- -t : TCP ํฌํธ
- -u : UDP ํฌํธ
- -l : LISTEN ์ํ
- -n : ํฌํธ ๋ฒํธ ์ซ์๋ก ํ์
- -p : ํ๋ก์ธ์ค ์ ๋ณด ํฌํจ
- grep java โ ๊ฒฐ๊ณผ ์ค java ๊ด๋ จ๋ ๊ฒ๋ง ํํฐ๋ง
์ถ๋ ฅ ์์
tcp 0 0 0.0.0.0:9090 0.0.0.0:* LISTEN 12345/java
// 9090 ํฌํธ๋ฅผ ์ฌ์ฉ ์ค์
โ
๋ฐ๋๋ก ํน์ ํฌํธ๋ฅผ ์ฌ์ฉ ์ค์ธ ํ๋ก์ธ์ค(์๋ฒ)๊ฐ ์๋์ง ํ์ธํ๋ ๋ฒ
netstat -tulnp | grep 8080
- 8080 ํฌํธ ๋์ JAR ํ์ผ์ด ์ ์ ํ ํฌํธ๋ฅผ ํ์ธํด ๋ณด์
- -t โ TCP ํฌํธ๋ง ์ถ๋ ฅ
- -u โ UDP ํฌํธ๋ ์ถ๋ ฅ
- -l โ ํ์ฌ LISTEN ์ค์ธ ํฌํธ๋ง ํ์ (์ฆ, ์๋ฒ๊ฐ ์ ์ ์ค์ธ ํฌํธ)
- -n โ ํฌํธ ๋ฒํธ ๋ฐ IP๋ฅผ ์ซ์๋ก ํ์ (๋๋ฉ์ธ ํด์ ์ ํจ, ์๋ โ)
- -p โ ํ๋ก์ธ์ค ID(PID)์ ์ด๋ฆ ํ์
- | grep 8080 โ ๊ฒฐ๊ณผ ์ค 8080 ํฌํธ ๊ด๋ จ๋ ๊ฒ๋ง ํํฐ๋ง
2. JSON ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋ BufferedWriter์์ ๋ฌธ์ ์ธ์ง ํ์ธํ์
- Gson์ผ๋ก JSON์ ๋ณํํ ๋ BufferedWriter๋ก ์ ์กํ๋ ๊ณผ์ ์์ ์๋ชป๋ JSON ํ์์ด ๋ค์ด๊ฐ์ ๊ฐ๋ฅ์ฑ์ ํ์ธํ์. BufferedWriter๋ฅผ ์ฌ์ฉํ ๋ .flush()๋ฅผ ํธ์ถํ์ง ์์ผ๋ฉด, ๋ฐ์ดํฐ๊ฐ ์ ๋๋ก ์ ์ก๋์ง ์๋ ๊ฒฝ์ฐ๋ ์๋ค.
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
Gson gson = new Gson();
String json = gson.toJson(myObject);
writer.write(json);
writer.newLine();
writer.flush(); // ๊ผญ flush ํธ์ถ
3. ์๋ฒ๊ฐ ์ ์์๋ํ๋๊ฐ?
์ค์๊ฐ์ผ๋ก ๋ก๊ทธ๋ฅผ ๋ณด๋ฉด์, ์๋ฌ ๋ฉ์์ง๊ฐ ์๋์ง ํ์ธ ๊ฐ๋ฅ
tail -f server.log
ํํ ์ธ์์์ ์ด์ ๋จ๊ธฐ = ๋ ธ๋ ฅ๊ณผ ์ค๋ ฅ
์ ๋ฆฌํ๋๋ผ ๋๋ฌด ํ๋ค์๊ณ ์ด๊ฑฐ ์ฐพ๋๋ฐ 2์๊ฐ์ ๊ฑธ๋ฆฐ๊ฑฐ ๊ฐ๋ค
ํ ๊ฒ ์ผ๋ง๋ ๋ง์๋ฐ ๋คํธ์ํฌ๊น์ง ์์์ผ ํ๋ค๋... ์ด๊ฒ ์ง์ง์ผ?
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์ค์ํ์ง๋ง ๊ธฐ๋ณธ์ ์ธ ๋คํธ์ํฌ ๊ฐ๋
์ด ์์ผ๋ฉด ๋จ์๊ฒ ์์กดํ ์๋ฐ์ ์๊ณ ,
๊ทธ๊ฒ์ ๊ฒฐ๊ตญ ์ธ๊ฐ๊ด๊ณ์์ ๋ถํ์ํ ๋ถ๋ด์ผ๋ก ์ด์ด์ง๊ธฐ ๋ง๋ จ์ด๋ค.
TCP/IP, DNS, HTTP, WebSocket ๊ฐ์ ๊ฐ๋
์ ์ต์ํ ์๊ณ ์์ด์ผ ํ๊ณ , ๋คํธ์ํฌ ๋๋ฒ๊น
๋ ์ด๋ ์ ๋ ํ ์ค ์์์ผ ํ๋ค.
'ํ๋ก๊ทธ๋๋ฐ์ธ์ด > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ

๐ฅ ๋ฌธ์
์๋ฐ ์์ผ ํต์ ์์ Gson ๋ผ์ด๋ธ๋ฌ๋ฆฌ + BufferedWriter ์ฌ์ฉ ์ค host ๊ด๋ จ ์๋ฌ ๋ฐ์ํจ
์๋ฐ์์ ๋ฐ๋ชฌ์ ๋ง๋ค๊ณ , ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ค ํ๋๋ฐ ํต์ ์ด ๋์ง ์๋ ๋ฌธ์
๐ ์์ธ
๊ฒฐ๊ตญ TCP/IP ๋ฌธ์ ์๊ณ , ์๋ฒ๋ IPv4, ํด๋ผ์ด์ธํธ(๋)๋ IPv6๋ก ์ค์ ๋์ด ์์ด์ ํธํ์ด ์ ๋ ๊ฒ์ด์๋ค.
๋คํธ์ํฌ ๋ด๋น์๊ฐ ์๋ฒ์ TCP/IP ๋ฒ์ ์ IPv4๋ก ์ค์ ํ๋๋ฐ ๋๋ ๊ทธ๋ฅ Runnable JAR์ ์คํํด์ IPv6๋ก ๋์ํ ๊ฒ์ด ์์ธ์ด๋ค.
โญ ํด๊ฒฐ๋ฒ
WSL์ nohup ๋ช ๋ น์ด๋ก JVM ์ต์ ์ถ๊ฐํ๋ฉด ํด๊ฒฐ ๊ฐ๋ฅ
nohup java -Djava.net.preferIPv4Stack=true -Dpath="๊ฒฝ๋ก" -jar ์ด๋ฆ.jar >> server.log 2>&1 &
- nohup โ ํฐ๋ฏธ๋ ์ข ๋ฃ ํ์๋ ์คํ ์ง์
- java -Djava.net.preferIPv4Stack=true โ IPv4 ์ฐ์ ์ฌ์ฉ ์ค์
- -Dpath="๊ฒฝ๋ก" โ path ํ๊ฒฝ ๋ณ์๋ฅผ "๊ฒฝ๋ก"๋ก ์ค์
- -jar ์ด๋ฆ.jar โ ์คํํ JAR ํ์ผ ์ง์
- >> server.log 2>&1 โ ์ถ๋ ฅ์ server.log ํ์ผ์ ์ ์ฅ (ํ์ค ์ถ๋ ฅ & ์๋ฌ ํฌํจ)
- & โ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ
๐ฆ TMI
์ฌ๊ธฐ์๋ถํฐ๋ ๋ ํผ์ ์ฝ์ผ๋ ค๊ณ ์ ๋ฆฌํ ๊ฒ
๋ฏธ๋์ ๋๋ฅผ ์ํด ์ด์ฌํ ๋ช
๋ น์ด ์ฐพ์์ ์ ๋ฆฌํด ํด ๋์
๋๋ ์ ํํ ์ดํด๋ฅผ ์ํด ๊ถ๊ธํ ๊ฒ์ ์ฐพ์๋ด
โ ์ง๊ธ JAR ํ์ผ์ด ํ๊ณ ์๋ ์ผ์ด ์ ํํ ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ๋์ํด?
JAR ํ์ผ๋ก ์คํ๋ Java ์๋ฒ๊ฐ ํน์ ํฌํธ๋ฅผ ์ ์ ํ๋ฉด์ ์๋ํ๋ ๋ฐฉ์์ด๋ค. ์์ผ ํต์ (ServerSocket)์ ์ด์ด ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋๊ธฐํ๋ ์ํ์์ nohup ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ฉด์ ๋ก๊ทธ๊ฐ ์ ์ฅ์ด ๋๊ณ ,
-Djava.net.preferIPv4Stack=true ์ต์ ์ด ์ ์ฉ๋์ด IPv4 ํ๊ฒฝ์์ ๋์ํ๋ ์๋ฆฌ์ด๋ค.
1. ์๋ฒ ์ญํ
- ServerSocket์ ์ฌ์ฉํด ํน์ ํฌํธ๋ฅผ ์ ์
- ํด๋ผ์ด์ธํธ(์: ์๋ฐ์คํฌ๋ฆฝํธ)์์ ๋ฐ์ดํฐ ์์ฒญ์ ๋ฐ์ ์ค๋น
- JSON ๋ฐ์ดํฐ๋ฅผ Gson์ ์ฌ์ฉํด ํ์ฑํจ
2. ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ์ค
- nohup์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํฐ๋ฏธ๋์ ๋ซ์๋ ๊ณ์ ์๋ํ ์ ์๊ฒ ํจ
- server.log์ ์คํ ๋ก๊ทธ๊ฐ ์ ์ฅ๋จ
โ TCP/IP ๋ฒ์ ์ IPv4๋ก ์ค์ ํ๋ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ
ํ ๋ฒ๋ง ์คํํ ๊ฑฐ๋ฉด? ๋ฐฉ๋ฒ 1 (-Djava.net.preferIPv4Stack=true ์ต์ ์ถ๊ฐํด์ ์คํ)
java -Djava.net.preferIPv4Stack=true -jar myapp.jar
์๋ฐ ์ฝ๋์์ ์ค์ ํ๊ณ ์ถ๋ค๋ฉด? ๋ฐฉ๋ฒ 2 (System.setProperty() ์ฌ์ฉ)
public class Main { public static void main(String[] args) { System.setProperty("java.net.preferIPv4Stack", "true"); // ๊ธฐ์กด ์ฝ๋ ์คํ } }
ํญ์ IPv4๋ก ์คํํ๊ณ ์ถ๋ค๋ฉด? ๋ฐฉ๋ฒ 3 (ํ๊ฒฝ ๋ณ์ ์ค์ )
๋ง์ฝ ์คํํ ๋๋ง๋ค -Djava.net.preferIPv4Stack=true๋ฅผ ์ถ๊ฐํ๋ ๊ฒ ๊ท์ฐฎ๋ค๋ฉด, ํ๊ฒฝ ๋ณ์๋ก ์ค์ ํ๋ฉด ๋จ.
ํ๊ฒฝ ๋ณ์ ํธ์ง๊ธฐ ์ด๊ณ ์ ์์คํ ๋ณ์ ์ถ๊ฐ
๋ณ์ ์ด๋ฆ: JAVA_TOOL_OPTIONS
๋ณ์ ๊ฐ: -Djava.net.preferIPv4Stack=true
์ ์ฉ ํ ์ฌ๋ถํ
ํ๋ฉด Java ์คํํ ๋ ์๋์ผ๋ก IPv4 ์ฐ์ ์ฌ์ฉํ๋ค.
ํน์ ๋ชฐ๋ผ์ ๊ด๋ จ ์๋ฌ๋ ๊ฐ์ด ๊ฒ์ํจ
- java.net.UnknownHostException: somehost DNS ์ค์ ๋ฌธ์ (์ฌ๋ฐ๋ฅธ ํธ์คํธ๋ช ์ฌ์ฉํ์)
- java.net.BindException: Address already in use ํฌํธ ์ถฉ๋
- java.net.SocketException: Connection reset ํด๋ผ์ด์ธํธ-์๋ฒ IP ๋ถ์ผ์น
โ ์๋ฒ/ํด๋ผ์ด์ธํธ์์ ๋คํธ์ํฌ ๊ด๋ จ ์๋ฌ ๋ฌ์ ๋ ๋์ฒ๋ฒ
1. ํฌํธ๊ฐ ์ด๋ฏธ ์ ์ ๋ ์ํ์ธ์ง ํ์ธํ์! (ํฌํธ ์ถฉ๋์ธ๊ฐ?)
- ์ด๋ป๊ฒ ํฌํธ ๋ฌธ์ ์ธ์ง ์๋๊ฐ?
- ์๋ฒ์์ ์ด๋ฏธ ์ฌ์ฉ ์ค์ธ ํฌํธ์ ๋ฐ์ธ๋ฉํ๋ ค ํ๋ฉด BindException ๋ฐ์ํจ
โ
์๋ ๋ช
๋ น์ด๋ก JAR ํ์ผ์ด ์ ์ ํ ํฌํธ๋ฅผ ํ์ธํ๋ ๋ฒ
netstat -tulnp | grep java
- netstat : ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ํ ํ์ธ
- -t : TCP ํฌํธ
- -u : UDP ํฌํธ
- -l : LISTEN ์ํ
- -n : ํฌํธ ๋ฒํธ ์ซ์๋ก ํ์
- -p : ํ๋ก์ธ์ค ์ ๋ณด ํฌํจ
- grep java โ ๊ฒฐ๊ณผ ์ค java ๊ด๋ จ๋ ๊ฒ๋ง ํํฐ๋ง
์ถ๋ ฅ ์์
tcp 0 0 0.0.0.0:9090 0.0.0.0:* LISTEN 12345/java // 9090 ํฌํธ๋ฅผ ์ฌ์ฉ ์ค์
โ
๋ฐ๋๋ก ํน์ ํฌํธ๋ฅผ ์ฌ์ฉ ์ค์ธ ํ๋ก์ธ์ค(์๋ฒ)๊ฐ ์๋์ง ํ์ธํ๋ ๋ฒ
netstat -tulnp | grep 8080
- 8080 ํฌํธ ๋์ JAR ํ์ผ์ด ์ ์ ํ ํฌํธ๋ฅผ ํ์ธํด ๋ณด์
- -t โ TCP ํฌํธ๋ง ์ถ๋ ฅ
- -u โ UDP ํฌํธ๋ ์ถ๋ ฅ
- -l โ ํ์ฌ LISTEN ์ค์ธ ํฌํธ๋ง ํ์ (์ฆ, ์๋ฒ๊ฐ ์ ์ ์ค์ธ ํฌํธ)
- -n โ ํฌํธ ๋ฒํธ ๋ฐ IP๋ฅผ ์ซ์๋ก ํ์ (๋๋ฉ์ธ ํด์ ์ ํจ, ์๋ โ)
- -p โ ํ๋ก์ธ์ค ID(PID)์ ์ด๋ฆ ํ์
- | grep 8080 โ ๊ฒฐ๊ณผ ์ค 8080 ํฌํธ ๊ด๋ จ๋ ๊ฒ๋ง ํํฐ๋ง
2. JSON ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋ BufferedWriter์์ ๋ฌธ์ ์ธ์ง ํ์ธํ์
- Gson์ผ๋ก JSON์ ๋ณํํ ๋ BufferedWriter๋ก ์ ์กํ๋ ๊ณผ์ ์์ ์๋ชป๋ JSON ํ์์ด ๋ค์ด๊ฐ์ ๊ฐ๋ฅ์ฑ์ ํ์ธํ์. BufferedWriter๋ฅผ ์ฌ์ฉํ ๋ .flush()๋ฅผ ํธ์ถํ์ง ์์ผ๋ฉด, ๋ฐ์ดํฐ๊ฐ ์ ๋๋ก ์ ์ก๋์ง ์๋ ๊ฒฝ์ฐ๋ ์๋ค.
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); Gson gson = new Gson(); String json = gson.toJson(myObject); writer.write(json); writer.newLine(); writer.flush(); // ๊ผญ flush ํธ์ถ
3. ์๋ฒ๊ฐ ์ ์์๋ํ๋๊ฐ?
์ค์๊ฐ์ผ๋ก ๋ก๊ทธ๋ฅผ ๋ณด๋ฉด์, ์๋ฌ ๋ฉ์์ง๊ฐ ์๋์ง ํ์ธ ๊ฐ๋ฅ
tail -f server.log
ํํ ์ธ์์์ ์ด์ ๋จ๊ธฐ = ๋ ธ๋ ฅ๊ณผ ์ค๋ ฅ
์ ๋ฆฌํ๋๋ผ ๋๋ฌด ํ๋ค์๊ณ ์ด๊ฑฐ ์ฐพ๋๋ฐ 2์๊ฐ์ ๊ฑธ๋ฆฐ๊ฑฐ ๊ฐ๋ค
ํ ๊ฒ ์ผ๋ง๋ ๋ง์๋ฐ ๋คํธ์ํฌ๊น์ง ์์์ผ ํ๋ค๋... ์ด๊ฒ ์ง์ง์ผ?
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์ค์ํ์ง๋ง ๊ธฐ๋ณธ์ ์ธ ๋คํธ์ํฌ ๊ฐ๋
์ด ์์ผ๋ฉด ๋จ์๊ฒ ์์กดํ ์๋ฐ์ ์๊ณ ,
๊ทธ๊ฒ์ ๊ฒฐ๊ตญ ์ธ๊ฐ๊ด๊ณ์์ ๋ถํ์ํ ๋ถ๋ด์ผ๋ก ์ด์ด์ง๊ธฐ ๋ง๋ จ์ด๋ค.
TCP/IP, DNS, HTTP, WebSocket ๊ฐ์ ๊ฐ๋
์ ์ต์ํ ์๊ณ ์์ด์ผ ํ๊ณ , ๋คํธ์ํฌ ๋๋ฒ๊น
๋ ์ด๋ ์ ๋ ํ ์ค ์์์ผ ํ๋ค.