본문 바로가기
TCP,IP

에코 Server/Client 기초

by 오징어땅콩2 2025. 9. 21.
반응형
import socket

import sys

# 실행 파일명 뒤에 포트 번호가 인수로 전달되는지 확인
if len(sys.argv) != 2:
    print("사용법: python script.py <포트번호>")
else:
    PORT = sys.argv[1]
    try:
        PORT = int(port)
        print(f"서버가 포트 {port}에서 실행됩니다.")
    except ValueError:
        print("포트 번호는 숫자여야 합니다.")


# 서버 주소와 포트
HOST = "0.0.0.0"   # 모든 IP에서 수신

# 소켓 생성 (IPv4, UDP)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((HOST, PORT))

print(f"UDP 서버 시작: {HOST}:{PORT}")

while True:
    data, addr = sock.recvfrom(1024)  # 최대 1024바이트 수신
    print(f"[{addr}] -> {data.decode()}")

    # 받은 메시지에 대해 에코(응답)
    reply = f"서버에서 받은 메시지: {data.decode()}"
    sock.sendto(reply.encode(), addr)

 

 

import socket
import sys

# 실행 시 아이피와 포트 번호가 두 개의 인수로 들어오는지 확인
if len(sys.argv) != 3:
    print("사용법: python script.py <아이피 주소> <포트 번호>")
else:
    SERVER_IP = sys.argv[1]
    SERVER_PORT = sys.argv[2]
    
    try:
        SERVER_PORT= int(SERVER_PORT)
        print(f"서버가 {SERVER_IP} IP 주소의 포트 {SERVER_PORT}에서 실행됩니다.")
    except ValueError:
        print("포트 번호는 숫자여야 합니다.")


# 서버 주소와 포트
# 소켓 생성
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
    msg = input("보낼 메시지 입력: ")
    if msg.lower() == "quit":
        print("종료합니다.")
        break
    # 서버로 메시지 전송
    sock.sendto(msg.encode(), (SERVER_IP, SERVER_PORT))
    # 서버로부터 응답 수신
    data, addr = sock.recvfrom(1024)
    print(f"[서버 응답] {data.decode()}")

댓글