実現したいこと
皆様お世話になっております。
pythonによるソケット通信プログラミングにて、クライアントからの接続をIPアドレスでフィルタリングしたいです。
例えば、192.168.0.102:8888で待機しているサーバがあり、このサーバに接続できるクライアントは、あるIPアドレス(例えば192.168.0.202)を持ったクライアントしか接続できないようにしたいです。
そこで、下記ソースコードのように、一度クライアントからの接続をacceptしてコネクションを確立した後、accept()返却値からクライアントのIPアドレスを確認して、もし違ったらコネクションをクローズするようなプログラムを書いてみましたが、一般的にこの方法で合っているのかを知りたくてご質問させて頂きました。
試しに書いたソースコード
python
1#サーバ側 2import socket 3 4with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: 5 sock.bind(('192.168.0.102', 8888)) 6 sock.listen(10) 7 while True: 8 (connection, addr) = sock.accept() 9 #接続を許可するIPアドレス:192.168.0.202 10 if addr[0] != "192.168.0.202": 11 connection.close() 12 else: 13 try: 14 data = connection.recv(BUFFER_SIZE) 15 connection.send(data) 16 finally: 17 connection.close() 18
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/11 03:00