開発環境
- macOS High Sierra - Apple
- Emacs (Text Editor)
- Python 3.6 (プログラミング言語)
入門 Python 3 (Bill Lubanovic (著)、斎藤 康毅 (監修)、長尾 高弘 (翻訳)、オライリージャパン)の11章(並行処理とネットワーク)、11.3(復習問題)2.を取り組んでみる。
コード(Emacs)
Python 3
server2.py
#!/usr/bin/env python3
import datetime
import zmq
f = open('server2.txt', 'w')
print('11-2', file=f)
host = '127.0.0.1'
port = 6789
context = zmq.Context()
server = context.socket(zmq.REP)
server.bind(f'tcp://{host}:{port}')
while True:
request = server.recv_string()
print(request, file=f)
if request == 'time':
s = datetime.datetime.now().isoformat()
else:
s = 'xxxxx'
server.send_string(s)
server.close()
f.close()
client2.py
#!/usr/bin/env python3
import datetime
import zmq
import time
print('11-2')
host = '127.0.0.1'
port = 6789
context = zmq.Context()
client = context.socket(zmq.REQ)
client.connect(f'tcp://{host}:{port}')
for i in range(10):
if i % 2 == 0:
client.send_string('time')
else:
client.send_string('TIME')
s = client.recv_string()
print(s)
time.sleep(5)
client.close()
入出力結果(Terminal, Jupyter(IPython))
$ ./server2.py &
[1] 63217
$ ./client2.py
11-2
2018-06-06T19:34:26.519351
xxxxx
2018-06-06T19:34:36.528852
xxxxx
2018-06-06T19:34:46.536524
xxxxx
2018-06-06T19:34:56.541838
xxxxx
2018-06-06T19:35:06.550626
xxxxx
$ fg
./server2.py
C-c C-cTraceback (most recent call last):
File "./server2.py", line 14, in <module>
request = server.recv_string()
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/zmq/sugar/socket.py", line 583, in recv_string
msg = self.recv(flags=flags)
File "zmq/backend/cython/socket.pyx", line 790, in zmq.backend.cython.socket.Socket.recv
File "zmq/backend/cython/socket.pyx", line 826, in zmq.backend.cython.socket.Socket.recv
File "zmq/backend/cython/socket.pyx", line 188, in zmq.backend.cython.socket._recv_copy
File "zmq/backend/cython/checkrc.pxd", line 12, in zmq.backend.cython.checkrc._check_rc
KeyboardInterrupt
$ cat server2.txt
11-2
time
TIME
time
TIME
time
TIME
time
TIME
time
TIME
$
0 コメント:
コメントを投稿