Log In
|
Sign Up
Search
rpc() 함수로 RESTful 요청을 직접 할 때 주의점
Writer
오창민
Description
socket 객체를 이용해서 connect(),send(),recv() 메소드를 쓰면서 네트웍 프로그래밍을 할 수도 있지만, 이런 것들을 하나로 모아서 해주는 rpc() 함수를 이용하는 것이 편리하다. 주의할 점은, rpc()함수도 상당히 low-level이기 때문에 네트웍 프로토콜에 맞지 않는 요청을 주면 이상한 동작을 할 수 있다는 것이다. 데몬의 정보를 얻어오는 "http://ipaddr:port/" 요청을 rpc()로 보낸다고 하면, "GET / HTTP/1.1"이라고 생각하고 아래와 같이 작성할 수 있다. ``` kvm> rpc('127.0.0.1:7577', 'GET / HTTP/1.1', 1000); ``` 결과는 아래와 같다: ``` Error: (1:45) remote host not responded for 1 sec (101 10) (EINPROGRESS Operation now in progress) (C1505). Operation cancelled. ``` 이유는 정확한 RESTful 요청이 되려면 HTTP 프로토콜에 맞춰서 끝에 '\r\n\r\n'을 넣어줘야 하기 때문. ``` kvm> rpc('127.0.0.1:7577','GET / HTTP/1.1\r\n\r\n',1000); HTTP/1.1 200 OK Access-Control-Allow-Origin: * Connection: close Content-Length: 511 Content-Type: text/json Cache-Control: no-cache { "Copyright":"Copyright (c) 1999-2018 Konan Technology, Inc.", "Name":"Konan Search", "Version":"5.1.0 (16K-64)", "MAC Address":"00-30-48-D3-B5-D2", "Kernel":"Linux opes 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64", "Client":"Compatible client library 5.1.0", "Revision":"39944", "Start Time":"2018-10-24 09:19:21", "Build":"2018-10-23 18:24:46 (Linux opes 2.6.32-279.el6.x86_64 x86_64)", "Compiler":"GNU gcc 4.4.7 20120313 (Red Hat 4.4.7-18)", "Summary":"Konan Search Engine" } ``` rpc()는 socket 객체의 메소드를 싸놓은 것일 뿐, low-level 함수라는 것을 잊지 말자.
Tag
rpc socket http
Module Name
Attachments
Comments
Save
Save
Cancel
Save
Cancel
Warning
Login