開発環境
- macOS High Sierra - Apple
- Emacs (Text Editor)
- Python 3.6 (プログラミング言語)
入門 Python 3 (Bill Lubanovic (著)、斎藤 康毅 (監修)、長尾 高弘 (翻訳)、オライリージャパン)の11章(並行処理とネットワーク)、11.3(復習問題)1.を取り組んでみる。
コード(Emacs)
Python 3
server1.py
#!/usr/bin/env python3
import socket
import datetime
f = open('server1.txt', 'w')
print('11-1', file=f)
server_address = ('localhost', 6789)
max_size = 4096
print('待機中…', file=f)
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(server_address)
while True:
data, client = server.recvfrom(max_size)
print(data.decode('utf-8'), client, file=f)
if data == b'time':
server.sendto(datetime.datetime.now(
).isoformat().encode('utf-8'), client)
else:
server.sendto(b'xxxxx', client)
server.close()
f.close()
client1.py
#!/usr/bin/env python3
import datetime
import socket
import time
print('11-1')
server_address = ('localhost', 6789)
max_size = 4096
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
for i in range(10):
if i % 2 == 0:
client.sendto(b'time', server_address)
else:
client.sendto(b'TIME', server_address)
data, server = client.recvfrom(max_size)
print(data.decode('utf-8'))
time.sleep(5)
client.close()
入出力結果(Terminal, Jupyter(IPython))
$ ./server1.py &
[1] 56640
$ ./client1.py
11-1
2018-06-05T18:37:11.299785
xxxxx
2018-06-05T18:37:21.306461
xxxxx
2018-06-05T18:37:31.314266
xxxxx
2018-06-05T18:37:41.320445
xxxxx
2018-06-05T18:37:51.326622
xxxxx
$ fg
./server1.py
C-c C-cTraceback (most recent call last):
File "./server1.py", line 14, in <module>
data, client = server.recvfrom(max_size)
KeyboardInterrupt
$ cat server1.txt
11-1
待機中…
time ('127.0.0.1', 61941)
TIME ('127.0.0.1', 61941)
time ('127.0.0.1', 61941)
TIME ('127.0.0.1', 61941)
time ('127.0.0.1', 61941)
TIME ('127.0.0.1', 61941)
time ('127.0.0.1', 61941)
TIME ('127.0.0.1', 61941)
time ('127.0.0.1', 61941)
TIME ('127.0.0.1', 61941)
$
0 コメント:
コメントを投稿