↓ 소켓이란?
https://yks-study.tistory.com/34?category=1007602
파이썬으로 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
'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 |