: λ λμ μ»΄ν¨ν° μ¬μ΄μμ TCP/IP λ€νΈμν¬λ₯Ό ν΅ν΄ μνΈ ν΅μ μ΄ κ°λ₯νλλ‘ μ²λ¦¬ν΄μ£Όλ λ°©μμ λλ€. μ¦ μ»΄ν¨ν° κ°μ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°κΈ° μν μλ°©ν₯ ν΅μ μ λλ€.
μμΌμ μ΄μ©ν΄ μλ²-ν΄λΌμ΄μΈνΈ μμΌμ ꡬμ±ν΄λ³΄κ² μ΅λλ€.
import socket
socket("λλ©μΈ", "μμΌμ μ ν")
# socket ν¨μμ λκ°μ μΈμλ₯Ό λ°μ΅λλ€.
> serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
λλ©μΈμ μ’
λ₯
λ AF~~ / PF~~ λ‘ μμνλ νλ‘ν μ½μ΄ μμ΅λλ€.
- AF_INETμ μ£Όμ νμμ΄λ©°, κ°μ₯ μΌλ°μ μΌλ‘ μ¬μ©λλ IPv4 μμΌμ
λλ€.
- μ£Όμ ννμ μν΄ (host, port) ννμ΄ μ¬μ©λ©λλ€.
μμΌμ μ ν
μ
SOCK_STREAM : TCP μμΌ
SOCK_DGRAM : UDP μμΌ
SOCK_RAW : 무κ°κ³΅ μμΌ
socket.bind(HOST, PORT)
> socket.bind(('127.0.0.1', 10000))
ν¬νΈλ²νΈμ μ’
λ₯
1) 0 ~ 1023λ² : μ μλ €μ§ ν¬νΈ (Well-Known Port)
ex. HTTP(80), HTTPS(443), DNS(53)
2) 1024 ~ 49151λ² : λ±λ‘λ ν¬νΈ (Registered Port)
3) 49152 ~ 65535λ² : λμ ν¬νΈ (Dynamic Port)μ¬κΈ°μ μ°λ¦¬κ° μμλ‘ μλ²λ₯Ό ꡬμΆν΄μ ν΅μ μ ν΄λ³΄κ³ μ ν λ, μ¬μ©ν μ μλ ν¬νΈλ²νΈλ 2)λ²(μμ ν¬νΈλ²νΈ) μ λλ€.
serverSocket.listen(νλ²μ μ²λ¦¬ν μ μλ μ°κ²°μ μ)
serverSocket.listen(5)
clientSocket, addr = serverSocket.accept()
print('addr')
# μ μν ν΄λΌμ΄μΈνΈμ μ£Όμκ° νλ¦°νΈ λ©λλ€.
print(clientSocekt)
# μ μν ν΄λΌμ΄μΈνΈμ μμΌμ΄ νλ¦°νΈ λ©λλ€.
print('--client information--')
# accept μ μ΄λ¦(serverSocket)μ 2λ²μμ μλ² μμΌμ μμ±ν λ³μλͺ
μ
λλ€.
while True:
data = clientSocket.recv(1024)
# data = 5λ²μμ μ€μ ν λ³μλͺ
.recv(byteν¬κΈ°)
if data:
clientSocket.sendall(data)
# μμ λ λ°μ΄ν°λ₯Ό ν΄λΌμ΄μΈνΈμκ² λ€μ μ λ¬ν©λλ€.
else:
break
# λ°μ΄ν°κ° λΉμ΄μμΌλ©΄ 루νλ₯Ό λ©μΆ₯λλ€
# μμΌ μ’
λ£
clientSocekt.close()
serverSocket.close()
import socket
serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serverSocket.bind(('127.0.0.1', 10000))
serverSocket.listen(5)
clientSocket, addr = serverSocket.accept()
while True:
data = clientSocket.recv(1024)
if data:
clientSocket.sendall(data)
else:
break
clientSocket.close()
serverSocket.close()
import socket
socket("λλ©μΈ", "μμΌμ μ ν")
# socket ν¨μμ λκ°μ μΈμλ₯Ό λ°μ΅λλ€.
> clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientSocket.connect(("127.0.0.1", 10000))
# coonect μ λ³μλͺ
μ 2μμ μ§μ ν λ³μλͺ
μ
λλ€.
# μλ²μμΌ - 3λ²μμ μ€μ ν νΈμ€νΈμ ν¬νΈ λ²νΈλ₯Ό λ£μ΄μ€λλ€.
try:
clientSocket.send('Hello! I"m client'.encode())
msg = clientSocket.recv(1024)
print(msg)
finally:
print('closing socket')
clientSocket.close()
import socket
clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientSocket.connect(("127.0.0.1", 10000))
try:
clientSocket.send('Hello! I"m client'.encode())
msg = clientSocket.recv(1024)
print(msg.decode())
finally:
print('closing socket')
clientSocket.close()
serversocket.py μ clientsocket.py λ κ°μ νμΌμ μμ±νμ¬
μμ μ½λλ₯Ό λΆμ¬ λ£μ΅λλ€.
ν°λ―Έλ λκ°
λ₯Ό μ΄κ³ ,
serversocket.py λ¨Όμ μ€ν
νλ€μμ
$ python serversocket.py
clientsocket.py λ₯Ό μ€ν
νλ©΄ λ©λλ€.
μ½λ μ€κ°μ€κ° printλ₯Ό μ°μ΄μ κ°μ νμΈ ν μ μμ΅λλ€.
$ python clientsocket.py