開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- Python 3.6 (プログラミング言語)
Introducing Python(Bill Lubanovic (著)、O'Reilly Media)のChapter 11(Concurrency and Networks)、Things to Do 11.2.を解いてみる。
Things to Do 11.2.
コード
server
#!/usr/bin/env python3 #-*- coding: utf-8 -*- import datetime import zmq host = '127.0.0.1' port = 6789 ctx = zmq.Context() server = ctx.socket(zmq.REP) server.bind('tcp://{0}:{1}'.format(host, port)) while True: req_bytes = server.recv() if req_bytes == b'time': rep = 'Current time: {0}'.format( datetime.datetime.utcnow().isoformat()).encode('utf-8') server.send(rep)
client
#!/usr/bin/env python3 #-*- coding: utf-8 -*- import zmq host = '127.0.0.1' port = 6789 ctx = zmq.Context() client = ctx.socket(zmq.REQ) client.connect('tcp://{0}:{1}'.format(host, port)) client.send(b'time') rep = client.recv().decode('utf-8') print(rep)
入出力結果(Terminal, IPython)
server
$ ./sample2_server.py ^CTraceback (most recent call last): File "./sample2_server.py", line 15, in <module> req_bytes = server.recv() File "zmq/backend/cython/socket.pyx", line 693, in zmq.backend.cython.socket.Socket.recv (zmq/backend/cython/socket.c:7683) File "zmq/backend/cython/socket.pyx", line 727, in zmq.backend.cython.socket.Socket.recv (zmq/backend/cython/socket.c:7460) File "zmq/backend/cython/socket.pyx", line 145, in zmq.backend.cython.socket._recv_copy (zmq/backend/cython/socket.c:2344) File "zmq/backend/cython/checkrc.pxd", line 12, in zmq.backend.cython.checkrc._check_rc (zmq/backend/cython/socket.c:9621) KeyboardInterrupt $
client
$ ./sample2_client.py Current time: 2017-01-20T02:44:59.519535 $
0 コメント:
コメントを投稿