파이썬 소켓 프로그래밍

2022. 7. 27. 05:30·Programming Language/PYTHON

↓ 소켓이란?

https://yks-study.tistory.com/34?category=1007602 

 

소켓 통신 (Socket Communication)

1. 소켓이란? 소켓의 사전적 의미는 "구멍", "콘센트", "연결" 등의 뜻을 가진다. 네트워크의 소켓 역시 주변에서 흔히 볼 수 있는 플러그를 끼우는 소켓과 개념과 비슷하다. 단지 플러그를 연결하

yks-study.tistory.com

 


파이썬으로 TCP/IP 소켓 통신 구현하기

 

➦ 서버 코드

from socket import *

host = "127.0.0.1"
port = 6789

serverSocket = socket(AF_INET, SOCK_STREAM)

serverSocket.bind((host, port))

serverSocket.listen(1)

print("listen 상태 - 연결 대기 중")

connectionSoket, addr = serverSocket.accept()
print("접속 주소 :", str(addr), "\n연결되었습니다.")

data = connectionSoket.recv(1024)
print("수신된 데이터 :", data.decode("utf-8"))
connectionSoket.send("HELLO".encode("utf-8"))
print("메세지를 보냈습니다.")

serverSocket.close()

 

from socket import *

→ 소켓 모듈에서 모든 함수를 불러온다.

 

host = "127.0.0.1"

→ 호스트의 ip 주소를 입력한다. 

여기서 ip 주소는 cmd창에 ipconfig를 치고

IPv4 옆의 ip 주소를 적어주면 된다.

 

port = 6789

→ 운영체제가 사용 중이지 않은 포트넘버 아무거나 정해준다.

 

serverSocket = socket(AF_INET, SOCK_STREAM)

→ 소켓을 생성한다.

AF_INET은 IPv4를 사용한다는 뜻이고

SOCK_STREAM은 해당 소켓에 TCP 패킷을 받겠다는 의미이다.

 

serverSocket.bind((host, port))

→ 서버가 사용할 IP주소와 포트 번호를 위에서 생성한 소켓에 결합한다.

 

serverSocket.listen(1)

→ 클라이언트로부터 연결 요청을 대기한다.

 

print("listen 상태 - 연결 대기 중")

→ 연결 대기 중이라는 것을 출력해준다.

 

connectionSoket, addr = serverSocket.accept()

→ accept()는 (소켓, 주소정보)로 구성되는 튜플을 리턴 해주는 함수이다.
따라서 connectionSocket에는 accept() API에서 만들어진 소켓이 저장되고,
addr에는 주소 정보가 저장된다.

 

print("접속 주소 :", str(addr), "\n연결되었습니다.")

→ 접속 주소를 출력해준다.

 

data = connectionSoket.recv(1024)

→ 수신 받을 데이터의 크기를 지정해준다. 

이 코드에서는 1024를 최대로 지정하였다.

 

print("수신된 데이터 :", data.decode("utf-8"))

→ 받은 데이터를 utf-8로 디코드 해 출력한다.

 

connectionSoket.send("HELLO".encode("utf-8"))

→ 클라이언트에게 "HELLO"를 엔코드 하여 보낸다.


print("메세지를 보냈습니다.")
→ 메세지를 보냈다는 것을 출력해준다.


serverSocket.close()

→ 연결을 끊는다.

 


➦ 클라이언트 코드

from socket import *

ip = "127.0.0.1"
port = 6789

clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((ip, port))

print("연결이 되었습니다")
clientSocket.send("Hi".encode("utf-8"))

print("메세지가 전송되었습니다.")
data = clientSocket.recv(1024)

print("수신된 데이터 :", data.decode("utf-8"))
clientSocket.close()

 

from socket import *
→ 소켓 모듈에서 모든 함수를 불러온다.


ip = "127.0.0.1"
port = 6789

→ 연결할 서버의 ip주소와 포트를 정해준다.

clientSocket = socket(AF_INET, SOCK_STREAM)

→ 소켓을 생성한다.


clientSocket.connect((ip, port))

→ ip와 포트 정보를 이용해 서버와 연결한다.

print("연결이 되었습니다")

→ 연결에 성공하면 출력한다.


clientSocket.send("Hi".encode("utf-8"))
→ 서버로 "Hi" 메시지를 보낸다.


print("메세지가 전송되었습니다.")

→ 전송되었다면 출력한다.


data = clientSocket.recv(1024)

→ 서버로부터 메세지를 받는다.

print("수신된 데이터 :", data.decode("utf-8"))

→ 수신된 메세지를 출력한다.


clientSocket.close()

→ 연결을 종료한다.

 


참고

https://1d1cblog.tistory.com/69

 

Python TCP 소켓 프로그래밍하기

TCP 소켓 프로그래밍에서 서버와 클라이언트가 동작하는 방식은 아래와 같습니다. Server socket socket(AF_INET, SOCK_STREAM) : 소켓 객체 생성 socket.bind(address) : 생성한 소켓을 서버 IP 및 포트를 튜플..

1d1cblog.tistory.com

 

저작자표시 비영리 (새창열림)

'Programming Language > PYTHON' 카테고리의 다른 글

[빡공팟 5기] | 코드업 | 6096 : [기초-리스트] 바둑알 십자 뒤집기(py)  (1) 2022.09.25
[빡공팟 5기] | 코드업 | 6095 : [기초-리스트] 바둑판에 흰 돌 놓기(설명)(py)  (1) 2022.09.23
[빡공팟 5기] | 코드업 | 6088 : [기초-종합] 수 나열하기1(py)  (1) 2022.09.22
[자료구조] - Python으로 스택 간단 구현하기  (0) 2022.08.27
터틀 아트(Turtle Art) 그리기  (0) 2022.05.17
'Programming Language/PYTHON' 카테고리의 다른 글
  • [빡공팟 5기] | 코드업 | 6095 : [기초-리스트] 바둑판에 흰 돌 놓기(설명)(py)
  • [빡공팟 5기] | 코드업 | 6088 : [기초-종합] 수 나열하기1(py)
  • [자료구조] - Python으로 스택 간단 구현하기
  • 터틀 아트(Turtle Art) 그리기
602zzang
602zzang
  • 602zzang
    yks_STUDY
    602zzang
  • 전체
    오늘
    어제
    • 분류 전체보기 (77)
      • Programming Language (36)
        • C (15)
        • PYTHON (9)
        • RUST (12)
      • Reverse Engineering (3)
      • OS (17)
        • LINUX (17)
      • 보안 이슈 (6)
      • Digital Forensics (1)
      • CTF (8)
      • 기타 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Rocky Linux
    c
    백준
    소켓 통신
    코드업
    공급망
    P4C
    python
    umassctf2025
    rust
    파이썬
    bandit
    빡공팟
    rustling
    보안동향
    TeamH4C
    드림핵
    cyberdefenders
    보안이슈
    picoCTF
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
602zzang
파이썬 소켓 프로그래밍
상단으로

티스토리툴바