差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
python:socket:programming [2020/05/30 18:38] – ともやん | python:socket:programming [2021/06/25 15:48] (現在) – ともやん | ||
---|---|---|---|
行 1: | 行 1: | ||
- | < | ||
- | < | ||
- | #result pre, #mincode pre { | ||
- | overflow: hidden; | ||
- | font-size: 10px; | ||
- | } | ||
- | # | ||
- | height: 250px; | ||
- | overflow: scroll; | ||
- | overflow-x: hidden; | ||
- | font-size: 10px; | ||
- | } | ||
- | #mintbl table { | ||
- | font-size: 12px; | ||
- | } | ||
- | #mintbl td pre { | ||
- | margin: 0; | ||
- | } | ||
- | #img_long { | ||
- | height: 400px; | ||
- | overflow: scroll; | ||
- | overflow-x: hidden; | ||
- | } | ||
- | .dokuwiki .plugin_wrap table { | ||
- | width: auto; | ||
- | } | ||
- | #logo { | ||
- | background-color: | ||
- | padding: 10px; | ||
- | width: fit-content; | ||
- | } | ||
- | #logo p { | ||
- | margin: 0; | ||
- | } | ||
- | </ | ||
- | </ | ||
====== Python ソケット プログラミング ====== | ====== Python ソケット プログラミング ====== | ||
+ | |||
+ | ===== Python で Wake on LAN のマジックパケットを送信する ===== | ||
+ | [[wpjp> | ||
+ | |||
+ | <WRAP prewrap 100% # | ||
+ | <code python> | ||
+ | # | ||
+ | # -*- coding: utf-8 -*- | ||
+ | import argparse | ||
+ | import socket | ||
+ | import struct | ||
+ | from traceback import print_exc | ||
+ | |||
+ | DEFAULT_PORT = 7 # 7 or 9 or 30000 ? | ||
+ | # | ||
+ | BROADCAST_IPADDR = ' | ||
+ | |||
+ | def send_magic_packet(mac_addr, | ||
+ | # create socket | ||
+ | with socket.socket(socket.AF_INET, | ||
+ | sock.setsockopt(socket.SOL_SOCKET, | ||
+ | # parse address | ||
+ | wol_mac = mac_addr.upper().replace(' | ||
+ | if len(wol_mac) != 12: | ||
+ | raise Exception(' | ||
+ | buf = b' | ||
+ | # encode to magic packet payload | ||
+ | magic_packet = b'' | ||
+ | for i in range(0, len(buf), 2): | ||
+ | magic_packet += struct.pack(' | ||
+ | |||
+ | # send magic packet | ||
+ | print(' | ||
+ | sock.sendto(magic_packet, | ||
+ | |||
+ | def parse_args(): | ||
+ | parser = argparse.ArgumentParser() | ||
+ | parser.add_argument(' | ||
+ | parser.add_argument(' | ||
+ | help=' | ||
+ | default=DEFAULT_PORT, | ||
+ | return parser.parse_args() | ||
+ | |||
+ | def main(): | ||
+ | args = parse_args() | ||
+ | mac_addr = args.mac_address | ||
+ | port = args.port | ||
+ | |||
+ | try: | ||
+ | #mac_addr = " | ||
+ | send_magic_packet(mac_addr, | ||
+ | |||
+ | except BaseException: | ||
+ | print_exc() | ||
+ | |||
+ | if __name__ == ' | ||
+ | main() | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | **実行例: | ||
+ | <WRAP prewrap 100%> | ||
+ | <code powershell> | ||
+ | $ python wol.py | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP prewrap 100% #result> | ||
+ | <code powershell> | ||
+ | usage: wol.py [-h] [-p port] mac_address | ||
+ | wol.py: error: the following arguments are required: mac_address | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP prewrap 100%> | ||
+ | <code powershell> | ||
+ | $ python wol.py -h | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP prewrap 100% #result> | ||
+ | <code powershell> | ||
+ | usage: wol.py [-h] [-p port] mac_address | ||
+ | |||
+ | positional arguments: | ||
+ | mac_address | ||
+ | |||
+ | optional arguments: | ||
+ | -h, --help | ||
+ | -p port, --port port Default broadcast port is 7. | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ターゲットの MAC address にマジックパケットを送信する。\\ | ||
+ | <WRAP prewrap 100%> | ||
+ | <code powershell> | ||
+ | $ python wol.py 68: | ||
+ | </ | ||
+ | </ | ||
+ | ターゲットの PC が起動する。\\ | ||
+ | <WRAP prewrap 100% #result> | ||
+ | <code powershell> | ||
+ | Sending magic packet for: 68: | ||
+ | </ | ||
+ | </ | ||
===== 参考文献 ===== | ===== 参考文献 ===== | ||
[[https:// | [[https:// | ||
+ | [[https:// | ||
+ | [[http:// | ||
+ | [[https:// | ||