🌏 TCP μ†ŒμΌ“ ν”„λ‘œκ·Έλž˜λ°

TCP (Transmission Control Protocol)

  • μ—°κ²° 지ν–₯ μ„œλΉ„μŠ€ 전이쀑(Full-Duplex)

enter image description here

  1. Socket 생성
  2. Setsockopt - ν•„μˆ˜μ μΈ 과정은 μ•„λ‹ˆμ§€λ§Œ μ£Όμ†Œμ™€ 포트번호의 μž¬ν™œμš©μ΄ μ΄λ£¨μ–΄μ§ˆ 수 μžˆλ‹€. λ˜ν•œ, μ£Όμ†Œκ°€ 이미 μ‚¬μš©μ€‘μΈ 경우λ₯Ό ν”Όν•  수 μžˆλ‹€.
  3. Bind() - μ†ŒμΌ“μ˜ 생성이후 μ†ŒμΌ“μ˜ IPμ£Όμ†Œμ™€ 포트번호λ₯Ό νŠΉμ •μ§“λŠ”λ‹€.
  4. Listen() ServerSocket - μ†ŒμΌ“μ˜ μƒνƒœλ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ™€μ˜ 연결을 μœ„ν•œ λŒ€κΈ°μƒνƒœ λ†“λŠ”λ‹€. - λ°±λ‘œκ·ΈλŠ” 이미 λ“€μ–΄μ˜¨ 연결외에 λ™μ‹œμ—°κ²°μ„ μ‹œλ„ν•˜λŠ” μ΅œλŒ€ ν΄λΌμ΄μ–ΈνŠΈμ˜ 수λ₯Ό μ˜λ―Έν•œλ‹€.
  5. Accept() ServerSocket - Connect()μ—μ„œ 받은 정보λ₯Ό 톡해 μš”μ²­ν•œ ν΄λΌμ΄μ–ΈνŠΈμ™€μ˜ 연결을 μœ„ν•œ μ†ŒμΌ“μ„ μƒμ„±ν•œλ‹€.
  6. Send() - Write()둜 좔가적인 데이터λ₯Ό 보낸닀.

캑처

λΉ„νŠΈ ꡐ윑 κ³Όμ •μ—μ„œμ˜ TCP μ†ŒμΌ“ ν”„λ‘œκ·Έλž˜λ° μ ˆμ°¨λŠ” Scannerλ₯Ό 톡해 μž…λ ₯λ°›λŠ” κ³Όμ •μ—μ„œ Listen() μƒνƒœλ₯Ό ν‘œν˜„ν–ˆκ³  InputStream / OutputStream 을 λ°›μ•„μ˜€κ³ , 데이터λ₯Ό 읽고 λ³΄λ‚΄λŠ” κ³Όμ • 전체λ₯Ό Send() 둜 μ„€κ³„ν–ˆλ‹€.

Client μͺ½μ—μ„œλŠ” Connect() μ—μ„œ μ„œλ²„ μ—°κ²° ν›„ InputStream / OutputStream 을 톡해 데이터λ₯Ό 읽고 μ“°λŠ” 과정을 μ§„ν–‰ν•œλ‹€.

TCP Server/Client μ½”λ“œ