파이썬(Python)3.11.3 클라이언트, 서버 소켓 테스트
python

파이썬(Python)3.11.3 클라이언트, 서버 소켓 테스트

연구소 인턴 2023. 7. 26.
300x250
반응형

<이론>

클라이언트와 서버 간의 소켓 연결 과정:
클라이언트는 서버에 데이터를 요청하고, 서버는 해당 요청에 대한 응답을 제공합니다. 이러한 통신 과정에서 소켓이 사용됩니다.

파이썬(Python)3.11.3 클라이언트, 서버 소켓 테스트 - undefined - <이론>


클라이언트 소켓:
클라이언트 소켓은 클라이언트 응용 프로그램과 네트워크 사이의 인터페이스입니다.
클라이언트 소켓은 서버의 IP 주소와 포트 번호를 지정하여 서버에 연결을 시도합니다.
클라이언트 소켓은 서버로부터 데이터를 요청하고, 서버로부터 받은 응답을 처리합니다.


서버 소켓:
서버 소켓은 서버 응용 프로그램과 네트워크 사이의 인터페이스입니다.
서버 소켓은 클라이언트의 연결 요청을 받아들이고, 클라이언트와의 통신을 위한 새로운 소켓을 생성합니다.
서버 소켓은 클라이언트로부터 받은 요청에 대해 응답을 보내고, 클라이언트와의 통신을 처리합니다.

 

연결 생성:
클라이언트가 서버에 연결을 시도하면, 서버 소켓은 클라이언트의 연결 요청을 수신합니다.
서버 소켓은 새로운 소켓을 생성하여 해당 클라이언트와의 통신을 위한 연결을 수립합니다.
이후 클라이언트 소켓과 서버 소켓은 양방향 통신을 할 수 있게 됩니다.
이렇게 클라이언트와 서버 간의 소켓 연결을 통해 데이터를 주고받으면서 원활한 통신이 이루어집니다. 이러한 소켓 통신은 네트워크 기반 응용 프로그램의 기초이며, 인터넷에서 수많은 클라이언트와 서버 사이의 통신을 가능케 합니다.

<실습>

WIn + R키로 실행창을 열어준 뒤 idle을 실행시켜 줍니다.

파이썬(Python)3.11.3 클라이언트, 서버 소켓 테스트 - undefined - <이론> - <실습>

저는 IDLE 3.11.3버전을 사용중인데 2.X.X버전을 사용하시는 분들은 소스코드가 다를 수 있습니다.

먼저 클라이언트의 소켓을 먼저 구성해보겠습니다.

import socket #소켓에 관련한 라이브러리

#소켓을 사용하기 위한 방법 1 : with socket.socket() as s :
#소켓을 사용하기 위한 방법 2 : s = socket.socket()
with socket.socket() as s :
    addr =("www.naver.com",80) #웹포트를 적어준다
    s.connect(addr) #웹에 접속을 한다.
    s.send("GET /\n".encode()) # 데이터 보내기 : 웹 요
    data = s.recv(1024) # 1024byte만큼 데이터 받기
    print(data.decode()) #변환된 데이터를 원래 데이터 크기로 변환

실행을 시켜보면 저렇게 나오게 되는데, 302 Found[URL redirection]이 나왔네요

파이썬(Python)3.11.3 클라이언트, 서버 소켓 테스트 - undefined - <이론> - <실습>

다음은 서버의 소켓을 구성해 보겠습니다.

import socket
with socket.socket() as s :
    addr = ("0.0.0.0",80) # 0.0.0.0은 모든 IP주소를 받는다는 의미이다.
    s.bind(addr)
    s.listen() # 연결할 상태로 만든다.
    print("start server")
    conn, addr = s.accept() # s소켓이 아니라 conn소켓을 사용하는이유는 s소켓을 사용하면 다른 사람이 s소켓에 연결되어 있을 때 1:1 통신이라 다른 사용자가 이용하지 못하기 때문에 다른 소켓을 사용한다.
    print("accept {}:{}".format(addr[0],addr[1]))
    data = conn.recv(1024)
    conn.send("HI This is Web".encode())

실행시켜보면 방화벽에서 차단되는데 허용을 해줍니다.

파이썬(Python)3.11.3 클라이언트, 서버 소켓 테스트 - undefined - <이론> - <실습>

IDLE 실행창을 보면 적어준 "start server" 문구가 출력되는 것을 확인이 가능합니다.

파이썬(Python)3.11.3 클라이언트, 서버 소켓 테스트 - undefined - <이론> - <실습>

internet에 접속하여 localhost:80으로 접속을 합니다.

파이썬(Python)3.11.3 클라이언트, 서버 소켓 테스트 - undefined - <이론> - <실습>

IDLE에서 주소와 포트가 나오는 것을 확인 할 수 있습니다.

파이썬(Python)3.11.3 클라이언트, 서버 소켓 테스트 - undefined - <이론> - <실습>

 

300x250
반응형

댓글