이제 Python으로도 해봅시다. Python에서는 CoAPthon으로 학습을 진행하려 합니다.
먼저, CoAPthon
을 pip를 통해 설치합니다.
sudo pip3 install CoAPthon3
이후 code l5.py
로 Visual Studio Code에서 파이선 코드를 연 후,
from coapthon.server.coap import CoAP
print('!')
를 통해 해당 패키지가 잘 포함 되는지 확인합니다. 문제 없이 포함 되었군요. 이후 깃허브에 나와있는 예제 참고 삼아 코딩합니다.
from coapthon.server.coap import CoAP
from coapthon.resources.resource import Resource
class HelloWorldResource(Resource):
def __init__(self, name="hello-world", coap_server=None):
super(HelloWorldResource, self).__init__(name, coap_server, visible=True, observable=True, allow_children=True)
self.payload = "Get a friendly greeting!"
def render_GET(self, request):
self.payload = 'Hello World from CoAPthon!'
return self
class CoAPServer(CoAP):
def __init__(self, host, port):
CoAP.__init__(self, (host, port))
self.add_resource('hello-world/', HelloWorldResource())
def main():
server = CoAPServer("0.0.0.0", 5683)
try:
server.listen(10)
except KeyboardInterrupt:
print("Server Shutdown")
server.close()
print("Exiting...")
if __name__ == '__main__':
main()
이름을 l5-server.py
라고 하고 실행합니다.
python3.9 l5-server.py
다음은 클라이언트 코드입니다. 이름을 l5-client.py
로 합니다.
from coapthon.client.helperclient import HelperClient
host = "127.0.0.1"
port = 5683
path = "hello-world"
client = HelperClient(server=(host, port))
response = client.get(path)
print(response.payload)
client.stop()
python3.9 l5-client.py
로 실행해 봅니다.
$ python3.9 l5-client.py
Hello World from CoAPthon!
잘됩니다. 이제 C#으로 만든 CoAP 서버를 띄워 동일하게 테스트 해봅니다.
$ python3.9 l5-client.py
Hello World from CoAP.NET!
프로그래밍 언어와 상관없이 상호 CoAP로 통신이 잘 되는 것을 확인할 수 있습니다!