반응형
Description | COMMAND | |
OS | UBUNTU 22.04.3 LTS | lsb_release -a |
GPU | NVIDIA GTX 1650 | nvidia-smi |
CPU | Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz | lscpu |
KERNEL | 6.3.0-rc3+ | uname -r |
우분투 시스템은 위와 같고 소켓은 GPT 도움으로 예제소스를 쉽고 빠르게 테스트 했다.
먼저 소켓 서버 코드
import socket
# 서버의 IP 주소와 포트 번호를 설정합니다.
# 여기서 ''는 모든 네트워크 인터페이스에서 들어오는 연결을 수락한다는 것을 의미합니다.
# 실제 서버의 IP 주소로 변경해야 할 수도 있습니다.
SERVER_HOST = ''
SERVER_PORT = 50081
# 소켓 객체를 생성합니다.
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 소켓을 주소에 바인드합니다.
server_socket.bind((SERVER_HOST, SERVER_PORT))
# 소켓이 클라이언트 연결을 듣기 시작합니다.
server_socket.listen(5)
print(f"[*] Listening as {SERVER_HOST}:{SERVER_PORT}")
# 클라이언트가 연결되기를 기다립니다.
client_socket, client_address = server_socket.accept()
print(f"[+] {client_address} is connected.")
# 클라이언트로부터 데이터를 받고 응답을 보냅니다.
try:
while True:
message = client_socket.recv(1024).decode()
if not message:
# 클라이언트가 연결을 종료했음
break
print(f"Received from {client_address}: {message}")
client_socket.send("Received your message.".encode())
finally:
# 연결을 종료합니다.
client_socket.close()
server_socket.close()
print("[*] Connection closed.")
다음은 클라이언트 소스 코드
import socket
# 서버의 IP 주소와 포트 번호를 설정합니다.
# 'localhost'나 '127.0.0.1'은 로컬 시스템을 가리킵니다.
# 실제 서버의 IP 주소로 변경해야 할 수도 있습니다.
SERVER_HOST = 'nts.leehands.com'
SERVER_PORT = 50081
# 소켓 객체를 생성합니다.
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 지정된 호스트와 포트에 연결합니다.
client_socket.connect((SERVER_HOST, SERVER_PORT))
print(f"[*] Connected to {SERVER_HOST}:{SERVER_PORT}")
# 서버에 메시지를 전송합니다.
client_socket.send("Hello, Server!".encode())
# 서버의 응답을 받습니다.
response = client_socket.recv(1024).decode()
print(f"Server said: {response}")
# 소켓 연결을 종료합니다.
client_socket.close()
그리고 내부 IP 는 잘되지만 외부 IP 으로 접속하면 안될 수 있다.
그것은 바로 우분투의 방화벽 설정 때문이다.
아래와 같이 방화벽 허용을 해줍니다.
sudo ufw allow 50081/tcp
sudo ufw allow 50081/udp
이제 소켓 통신이 잘되는 것을 가볍게 확인할 수 있다.
다음시간에 봐요~~`
반응형
'파이썬' 카테고리의 다른 글
Pycharm, win32api 설치 (아나콘다 (0) | 2022.11.14 |
---|---|
파이썬 가상환경 구축하기 (Virtualenv) (0) | 2022.06.09 |
파이썬 배포파일 만들기 ( pyinstaller ) (0) | 2022.05.23 |
Pypi에서 설치한 라이브러리 모듈을 import 인자는 ? (0) | 2022.03.16 |
모듈레벨에서 Print 쓰고싶다면 , from __future__ import print_function (0) | 2022.02.10 |