Client
# 소켓 모듈을 불러온다.
from socket import *
# 목적지 주소(IP, Port)를 설정한다.
# serverName을 이용해서 IP를 얻기위해 DNS 검색이 자동으로 수행된다.
serverName = ""
serverPort = 11111
# clientSocket 클라이언트의 소켓을 생성한다.
# AF_INET : 주소군(family), 하부 네트워크가 IPv4를 사용하고 있음을 나타낸다.
# SOCK_DGRAM : UDP 소켓임을 의미한다.
clientSocket = socket(AF_INET, SOCK_DGRAM)
# 사용자가 message를 입력한다.
message = input('Input lowercase sentence:')
# 목적지 주소 (serverName, serverPort)를 패킷(message.encode())에 붙여서 clientSocket으로 보낸다.
# 출발지 주소도 패킷 붙지만, 이는 코드를 통해 명시적으로 붙지 않고 하부 운영체제가 자동으로 수행된다.
clientSocket.sendto(message.encode(), (serverName, serverPort))
# 서버로부터의 수신을 기다린다.
# 인터넷으로부터 패킷이 소켓에 도착하면 아래 변수들에 할당된다.
# modifiedMessage : 패킷 데이터가 할당된다.
# serverAddress : 패킷의 출발지 주소(서버 주소)가 할당된다. 이미 알고있는 정보기때문에 필요하지는 않지만, 파이썬에서 제공해준다.
# 2048 : 해당 크기의 버퍼를 받아들인다.
modifiedMessage, serverAddress = clientSocket.recvfrom(2048)
# 도착한 메시지가 출려된다.
print(modifiedMessage.decode())
# 소켓을 닫는다.
clientSocket.close()
# 프로세스가 종료된다,
Server
from socket import *
serverPort = 11111
serverSocket = socket(AF_INET, SOCK_DGRAM)
# 소켓에 주소를 할당한다.
serverSocket.bind(("", serverPort))
print("The server is ready to receive")
while True:
message, clientAddress = serverSocket.recvfrom(2048)
modifiedMessage = message.decode().upper()
serverSocket.sendto(modifiedMessage.encode(), clientAddress)
'Network' 카테고리의 다른 글
TCP 연결 과정 (0) | 2024.01.15 |
---|---|
TCP Socket Programming in Python (0) | 2024.01.13 |