λͺ©λ‘μ 체 κΈ (1005)
π 곡λΆνλ μ§μ§μνμΉ΄λ μ²μμ΄μ§?
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/pju1q/btsEGgKQCx2/4Z831jvJiLTdV6OZRPwEZK/img.png)
β λ©ν°λ―Έλμ΄ μΈκ°μ΄ μ€κ°μΌλ‘ μΈμνλ μ¬λ¬ 맀체λ€μ νΌν©μ μλ―Έ 'λ§μ', 'λ€μν' μ΄λΌλ λ»μ κ°μ§ λ©ν° (Multi) μ μ λ¬ λ±μ μλ¨, λ°©λ², 맀체 λ€μ λ»νλ λ―Έλμ΄ (Media) μ ν©μ±μ΄ μΈκ°μ κ°κ°κΈ°κ΄μ μ΄μ©ν΄μ μ리, μ΄λ―Έμ§ λ±μ μ 보λ₯Ό λ°μλ€μ΄κ³ λ°μ΄ν°λ₯Ό λ°μλ€μ΄κΈ° μν΄ λ, κ·, μ½, ν, νΌλΆ μ μ€κ°μ μ¬μ©νλ€ μΈκ°μ κ°κ°κΈ°κ΄μ ν΅ν΄μ μΈμλλ μ 보λ₯Ό λ―Έλμ΄λΌλ λ¨μ΄λ‘ ννν μ μλ€ λμ§νΈ λ―Έλμ΄λ μΌλ°μ μΌλ‘ νλμ λ―Έλμ΄λ§ μ¬μ©λμ§ μκ³ μμ±, μ리, λ¬Έμ, κ·Έλ¦Ό, λμμ λ±μ λ―Έλμ΄κ° νΌν©λ ννλ‘ μ¬μ©λλλ°, μ΄λ₯Ό λ©ν° λ―Έλμ΄ λΌκ³ λΆλ₯Έλ€ λμ§νΈ λ―Έλμμλ μ¬λ¬ λ―Έλμ΄ μ€μμλ μ£Όλ‘ μκ°κ³Ό μ²κ°μ μ¬μ©νκ³ μλ€ β μμ μ²΄κ³ μμμ λΉμ΄ 물체μ μν΄μ λ°μ¬λμ΄μ μ¬λμ ..
β μ¬λ¬Ό μΈν°λ· μ¬λ¬Όμ΄ μλ‘ μ°κ²°λλ μΈν°λ·, λ€νΈμν¬ νκ²½μ΄ μ€μνλ€ μΈν°λ·μ μνμΌ μΌλ‘λΆν° λ°μ ν΄ μμΌλ©°, μ λμ€μ λ€νΈμν¬ κΈ°λ₯μ΄ μΆκ°λκ³ μΉμ΄ λ±μ₯νλ©΄μ μ±μ₯ν¨ μΈν°λ·μ ν¨ν· κΈ°λ°μ ν΅μ λ°©μμΈ μ΄λλ·μ κΈ°λ°μΌλ‘ νκ³ , μ£Όλ‘ μλ²μ ν΄λΌμ΄μΈνΈ ꡬ쑰λ₯Ό μ¬μ©νλ€ β λ€νΈμν¬ ν΅μ μ λ’°μ±μ μ 곡νλ TCP μμΌκ³Ό μ λ’°μ±μ΄ μμ§λ§ μλκ° λΉ λ₯Έ UDP μμΌμΌλ‘ λλλ€ λ¦¬λ μ€ λ€νΈμν¬ νλ‘κ·Έλλ°μμλ λ μ’ λ₯μ μμΌμ λͺ¨λ μ§μνλ€ β μμΌ μΈν°νμ΄μ€ μμ© νλ‘κ·Έλ¨μμ TCP/IP μ΄μ©νλ 창ꡬ μν μ νλ©°, λ€νΈμν¬ μμ© νλ‘κ·Έλ¨μ μμΌμ ν΅ν΄ λ°μ΄ν°λ₯Ό μ‘μμ ν μ μλ€ λ¦¬λ μ€λ νμΌμ΄λ λλ°μ΄μ€ λ± λͺ¨λ μΈν°νμ΄μ€κ° νμΌλ‘ μ·¨κΈλλλ° μμΌ λλ νμΌλ‘ μ·¨κΈλλ€ μμΌλ read(), write(), c..
β μΉ μλ²μ λΌμ¦λ² 리 νμ΄μ μ μ΄ HTML λ¬Έμ μμ μ¨λμ μ΅λ λ±μ μ§μ νμν μ μλλ‘ μ½μ ν¨ + lED μΌκ³ λ μ μλ λΌλμ€ λ²νΌ + μμ μ μ°μ£Όνκ³ λͺ¨ν°λ₯Ό μ μ΄ μΉ λΈλΌμ°μ μμ μΉ μλ²μ λ°μ΄ν°λ₯Ό λ³΄λΌ λ νκ·Έλ₯Ό μ¬μ©νλ€ νκ·Έλ POST λ©μμ§λ‘ μμ²μ 보λ΄μ§λ§, μ μΉ μλ²λ GET λ©μλλ§ μ²λ¦¬νκΈ° λλ¬Έμ νκ·Έμ method μμ±μ μ΄μ©νμ¬ GET λ©μλλ‘ λ³΄λ΄λλ‘ μ€μ νλ€ μΉ λΈλΌμ°μ μμ μΉ νμ΄μ§λ₯Ό λΆλ¬λ€μ¬μ μ΅μ μ μ ννκ³ Submit λ²νΌμ μ ννλ©΄, μΉ μλ²λ‘ 'http://μλ²μ£Όμ:ν¬νΈλ²νΈ/index.html?led=Off' μμ²μ GET λ©μλλ‘ μ λ¬λλ€ μΉ μλ²μμλ GET λ©μλλ‘ μ μ‘λ λ©μμ§λ₯Ό λΆμνκ³ λΌμ¦λ² 리 νμ΄μ GPIO μ ν΄λΉ λͺ λ Ήμ λ΄λ¦΄ μ μλ€ μ½λλ₯Ό ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nvZ0v/btsEEJM26Fj/nn4Ur7Xv3kMIH14kq3vTS1/img.png)
β λ°λͺ¬ νλ‘μΈμ€ μμ€ν μλΉμ€λ λ°λͺ¬ (Daemon) μ΄λΌλ ννμ νλ‘μΈμ€λ‘ μ€νλλ€ λ°λͺ¬μ μΌλ°μ μΌλ‘ λ°±κ·ΈλΌμ΄λλ‘ μ€νλλ νλ‘κ·Έλ¨ ν°λ―Έλμ μ¬μ©ν μ μκΈ° λλ¬Έμ ν°λ―Έλλ‘ λ©μμ§λ₯Ό μΆλ ₯νλ printf() λ±μ ν¨μλ₯Ό μ¬μ©ν μ μλ€ λ°λͺ¬ νλ‘μΈμ€λ₯Ό λ§λ€λ €λ©΄, umaks() ν¨μλ₯Ό μ¬μ©νμ¬ λ°λͺ¬μ΄ μμ±νλ νμΌμ μ κ·ΌκΆνμ 미리 μ€μ νλ€ μλ‘μ΄ νλ‘μΈμ€λ₯Ό λ§λ€μ΄ μΈμ κ³Ό κ·Έλ£Ήμ 리λλ‘ λ§λ€κ³ , ν°λ―Έλ μ μ΄μ κ΄λ ¨λ μκ·Έλμ λͺ¨λ 무μνλ€ νλ‘μΈμ€μμμ λλ ν°λ¦¬λ₯Ό '/' λ‘ μ€μ , μ΄λ¦° νμΌ λμ€ν¬λ¦½ν°λ₯Ό λͺ¨λ λ«λλ€ ν°λ―Έλκ³Ό κ΄λ ¨λ νμ€ μ λ ₯κ³Ό νμ€ μΆλ ₯, νμ€ μλ¬μ λν΄ μ¬μ©ν μ μλλ‘ μ²λ¦¬νκ³ , λ°λͺ¬κ³Ό κ΄λ ¨λ μ²λ¦¬λ₯Ό μννλ©΄ λλ€ βοΈ λ°λͺ¬ νλ‘μΈμ€ νΉμ§ λΆλͺ¨ νλ‘μΈμ€κ° init νλ‘μΈμ€λΌλ ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cFUtGh/btsEEx6Kdmj/g4mEV9jaVpGwjTWaZWmKGK/img.png)
β μΉκ³Ό HTTP μΉ(Web) μ μΈν°λ·μ μν λ€νΈμν¬ μμ€ν μΌλ‘ μλ²μ ν΄λΌμ΄μΈνΈλ€μ΄ μ°κ²°λμ΄ μλ μ§ν© μ μΈκ³μ λ€νΈμν¬κ° νμ΄νΌν μ€νΈ λ§ν¬λ‘ μ°κ²°λ λͺ¨μ΅μ΄ λ§μΉ κ±°λν κ±°λ―Έμ§ (CobWeb) λλ κ±°λ―Έμ§ λͺ¨μμ λ§κ³Ό κ°λ€κ³ ν΄μ λΆμ¬μ§ μ΄λ¦ μΉ κΈ°μ μ HTTP (HyperText Transfer Protocol) λΌλ νλ‘ν μ½ μμμ ꡬλλλ©°, μΉκ³Ό κ΄λ ¨λ νμ€νλ μλ μμ΄λ μΉ μ»¨μμμ (W3C, World Wide Web Consortium) μμ μ§ννλ€ μΉμ μΈν°λ·μ κΈ°λ°μΌλ‘ μΉ μλ²μ μΉ λΈλΌμ°μ κ° μλ²μ ν΄λΌμ΄μΈνΈ κ΅¬μ‘°λ‘ λμνλ€ TCPλ₯Ό κΈ°λ°μΌλ‘ λμνλ©° 80 λ² ν¬νΈλ²νΈλ‘ μ¬μ©νλ€ HTTP μ 첫 λ κΈμλ νμ΄νΌν μ€νΈλ₯Ό κ°λ¦¬ν€λ©°, νμ¬ λ¬Έμμ μ°κ²°λ λ€λ₯Έ νμ΄μ§λ‘μ μ°κ²°μ μλ―Έ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/blI7TT/btsEbAiqP46/RgP2Kk8nEMSsO2ebEDjECK/img.png)
β λ³ν μ²λ¦¬ μλ² μμ μλ² μ½λλ₯Ό λΉλν ν 2λμ ν΄λΌμ΄μΈνΈκ° μ μν κ²½μ°λΌλ©΄ 첫 λ²μ§Έ ν΄λΌμ΄μΈνΈλ μλ²μ λ¬Έμ μμ΄ μ μλμ§λ§, λ λ²μ§Έ ν΄λΌμ΄μΈνΈκ° μ μνλ©΄, λ λ²μ§Έ ν΄λΌμ΄μΈνΈλ 첫 λ²μ§Έ ν΄λΌμ΄μΈνΈμ μ°κ²°μ΄ λμ΄μ§ λκΉμ§ λκΈ° μνλ‘ μκ» λλ€ μ¬λ¬ ν΄λΌμ΄μΈνΈλ₯Ό λμμ λ³λ ¬λ‘ μ²λ¦¬νκΈ° μν΄μλ λ©ν° νλ‘μΈμ€λ λ©ν° μ€λ λ κΈ°λ°μ μλ²κ° νμνλ€ λ©ν° νλ‘μΈμ€ μλ²μ κ²½μ° ν΄λΌμ΄μΈνΈμ μ μμ΄ λ€μ΄μ¬ λλ§λ€ μλ‘μ΄ νλ‘μΈμ€λ₯Ό λ§λ€μ΄μ μ²λ¦¬ν μ μλ€ BUT π¨ νλ‘μΈμ€λ₯Ό λ§λλλ° μκ°μ΄ λ§μ΄ κ±Έλ¦¬κ³ , νλ‘μΈμ€ κ° ν΅μ (IPC) μ΄ λ©ν° μ€λ λμ λΉν΄ 볡μ‘νκΈ° λλ¬Έμ μμ¦μ λ©ν° μ€λ λλ₯Ό λ λ§μ΄ μ΄λ€ λ©ν° μ€λ λ μλ²λ ν΄λΌμ΄μΈνΈμ μμ²μ΄ λ€μ΄μ¬ λλ§λ€ μλ‘μ΄ μ€λ λλ₯Ό λ§λ€μ΄μ μ²λ¦¬νλ€ λ©ν° νλ‘..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/4qvuR/btsEcq0mdqn/OiXHakvRQWkyDy522pkit0/img.png)
β TCP TCP λ μ°κ²° κΈ°λ°μ μ λ’°μ±μ΄ μλ ν΅μ λ°©μμΌλ‘ FTP, λ©μΌ, μΉ μλΉμ€ λ± μΈν°λ·μ μ΄μ©ν λ€μν μλΉμ€μμ μ¬μ©λκ³ μλ€ TCP λ μ£Όλ‘ μλ²μ ν΄λΌμ΄μΈνΈ κ° ν΅μ λ°©μμ΄λ€ TCP μλ²λ μμΌμ μμ±ν ν λ°μΈλ (bind) νλ κ³Όμ μ UDP κ³Όμ κ³Ό λμΌνλ€ butπ¨ UDPμ λ€λ₯΄κ² TCP λ ν΄λΌμ΄μΈνΈκ° 3 Way-Handshaking (connect() ν¨μ) λ₯Ό ν΅ν΄μ μλ²μ μ μνκΈ° λλ¬Έμ ν΄λΌμ΄μΈνΈμ λκΈ°λ₯Ό μ²λ¦¬νκΈ° μν ν (queue) κ° νμνλ€ μ΄λ₯Ό μν΄ listen() ν¨μλ₯Ό ν΅ν΄ λκΈ° νλ₯Ό μ€μ νκ³ , accept() ν¨μλ₯Ό ν΅ν΄ ν΄λΌμ΄μΈνΈμ μ μμ κΈ°λ€λ¦΄ μ μλ€ TCP ν΄λΌμ΄μΈνΈλ λ¨Όμ μμΌμ μμ±νκ³ μλ²μ μ μμ ν΄μΌνλλ°, connect() ν¨μλ₯Ό μ΄μ©νλ€..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/q8oDv/btsEaZChAbr/fKkgvU6qVaUmLKkJ6lBTi1/img.png)
β μμΌμ μ΄μ© UDP νλ‘ν μ½μ λ°μ΄ν°μ μ μ‘ μ μ λ’°μ±μ μμ§λ§ μλκ° λΉ λ₯΄κΈ° λλ¬Έμ μΌλ°μ μΈ LAN νκ²½μμ λ§μ΄ μ¬μ© LAN μμμλ ν¨ν·μ λΆμ€μ΄ κ±°μ μλ€κ³ ν¨ μλ²μ κ²½μ° bind() ν¨μλ₯Ό μ¬μ©νμ¬ μ΄μ체μ μ ν΄λΉ ν¬νΈλ‘ λ€μ΄μ€λ μλΉμ€λ₯Ό UDP μλ²μμ μ¬μ©ν μ μλλ‘ μ°κ²°ν΄μ€μΌ νλ€ UDPμλ²μ ν΄λΌμ΄μΈνΈ λͺ¨λ sendto() ν¨μλ₯Ό ν΅ν΄μ λ°μ΄ν°κ·Έλ¨μ 보λ΄κ³ , recvfrom) ν¨μλ₯Ό ν΅ν΄ λ°μ΄ν°κ·Έλ¨μ μμ νλ€ μμΌ μ¬μ©μ΄ λλλ©΄ close() ν¨μλ₯Ό μ¬μ©νμ¬ μμΌμ λ«λλ€ μ λμ€μμ μΈν°λ· ν΅μ μ νκΈ° μν΄μλ λ¨Όμ μμΌμ μμ±ν΄μΌ νλλ°, socket() ν¨μλ₯Ό μ¬μ©νλ€ νΈμΆμ μ±κ³΅νλ©΄ μμΌμ λν νμΌ λμ€ν¬λ¦½ν°λ₯Ό λ°ννκ³ , μ€ν¨νλ©΄ -1μ λ°ννλ€ int socket(int ..