개발 | Development

PYTHON | 네트워크 프로그래밍 [PART 2]

건우Sec 2024. 9. 14. 20:30

 

https://www.youtube.com/watch?v=SimNmTciQTs

 

이분 강의에 두번째 파트를 기록했습니다

 

서버와 클라이언트 란?

 

1. 서버(server) : 서버란 서비스(service) 를 제공하는 컴퓨터에 일하는 존재이다

사람으로 따지자면 카페 알바생 처럼 서비스를 제공하는 것처럼 

서버도 서비스를 제공하여 클라이언트에게 여러가지 서비스를 제공한다.

 

2. 클라이언트(client) : 클라이언트 란  서버에서 클라이언트는 서비스에 접속할수 있는 것을 말한다.

사람으로 따지자면 카페에서 서버(server) 한테 주문을 받는 사람으로 따지면 쉽다.

 

클라이언트와 서버 통신

클라이언트는 요청을 보내고 서버는 클라이언트가 보낸 이를 처리하며 응답을 반환한다.

 

쉽게 말해 클라이언트(client) 가 서버(server) 에게 주문을 요청하면 서버(server) 가 응답을 반환하여 주문을 처리하는 방식을 말한다.

 

 

파이썬 클라이언트와 서버 통신

 

 

서버(server)

import socket

s = socket.socket()
print('socket succesfully created')

port = 56789
s.bind(('', port))
print(f'socket binded to port{port}')
s.listen(5)
print('socket is listening')
while True:
    c, addr = s.accept()
    print('Got Connection from' , addr)
    message = ('Thank you for connecting')
    c.send(message.encode())
    c.close()

 

클라이언트(client)

import socket
s = socket.socket()
port = 56789
s.connect(('127.0.0.1', port))
print(s.recv(1024))
s.close()

 

서버 코드 해석

 

클라이언트 코드 해석

 

 

bind() 란?

bind() 함수는 소켓을 특정 IP 및 포트에 바인딩 하는데 사용되는 함수이다.

bind() 는 소켓을 IP 주소와 포트 번호를 네트워크 주소에 연결하여 클라이언트가 해당

주소를 통해 서버에 접근할수 있도록 해준다.

 

listen() 란?

listen() 함수는 서버 클라이언트의 연결 요청을 대기하도록 하는 함수이다.

 

accept() 란?

accept() 함수는 listen() 상태에서 클라이언트의 연결 요청을 수락하는

함수이다. 클라리언트가 서버에 연결을 시도했을떄 그 요청을 처리하여 실제데이터 통신을 위한

소켓을 반환한다.

 

close() 란?

close() 함수는 소켓을 닫을떄 사용되는 함수이므로

소켓을 정리하거나 소켓을 닫을떄 쓰는 함수이다.

 

 

출력 화면 ( 고침 )