socket server作成のPythonにて権限エラーが発生する。
Pythonのチュートリアルに記載されているsocket通信を試してみようと以下のPytnon文を作成したのですが、権限エラーが発生しました。
Python
1import socket 2 3TCP_IP = '127.0.0.1' 4TCP_PORT = 62 5BUFFER_SIZE = 20 # Normally 1024, but we want fast response 6 7s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 8s.bind((TCP_IP, TCP_PORT)) 9s.listen(1) 10 11conn, addr = s.accept() 12print("Connection address:". addr) 13while 1: 14 data = conn.recv(BUFFER_SIZE) 15 if not data: break 16 print("received data:", data) 17 conn.send(data) # echo 18conn.close() 19 20Traceback (most recent call last): 21 File "/home/yuta/Desktop/work/python/PycharmProjects/TestPJ/networking/server.py", line 8, in <module> 22 s.bind((TCP_IP, TCP_PORT)) 23PermissionError: [Errno 13] Permission denied
s.bind((TCP_IP,TCP_PORT))に対して権限エラーが表示されいるのですが、ここの内容はsocket serverに指定するIPアドレスとポートを指定しているだけです。
(そのIPアドレスも自分自身を指定しているに過ぎません)
権限周りが介入する余地がないように思うのですが、一体どの部分に対して権限エラーが発生しているのでしょうか?
わかる方がいましたらどうかご教授お願いいたします。
追記ソケットメッセージが送信されない
回答者様のおかげでポートの誤りに気づきましたが、その後にクライアントからサーバへsocket通信を実行してもメッセージが送信できない事象に見舞われました。
cleint
1import socket 2 3TCP_IP = '127.0.0.1' 4TCP_PORT = 49155 5BUFFER_SIZE = 1024 6MESSAGE = b'Hello, World!' 7 8s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Generete socekt(IP v4) and TCP 9s.connect((TCP_IP, TCP_PORT)) # Specify IP address and port 10s.send(MESSAGE) # Send Message 11data = s.recv(BUFFER_SIZE) #receive buffer size 12s.close() 13 14print("received data", data) 15 16 17/home/yuta/Desktop/work/python/PycharmProjects/TestPJ/venv/bin/python /home/yuta/Desktop/work/python/PycharmProjects/TestPJ/networking/client.py 18received data b'' 19 20Process finished with exit code 0
server
1import socket 2 3TCP_IP = '127.0.0.1' 4TCP_PORT = 49155 5BUFFER_SIZE = 1024 6 7s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Generete socekt(IP v4) and TCP 8s.bind((TCP_IP, TCP_PORT)) # Specify IP address and port 9s.listen(1) # Prepare to connect socket 10 11conn, addr = s.accept() # Wait for connection socket 12print("Connection address:". addr) 13while 1: 14 data = conn.recv(BUFFER_SIZE) 15 if not data: break 16 print("received data:", data) 17 conn.send(data) # echo 18conn.close() 19 20Traceback (most recent call last): 21 File "/home/yuta/Desktop/work/python/PycharmProjects/TestPJ/networking/server.py", line 12, in <module> 22 print("Connection address:". addr) 23AttributeError: 'str' object has no attribute 'addr' 24 25Process finished with exit code 1
エラーの内容としてクライアント側でそもそも送信するためのメッセージが生成されていないように思いましたが、何が間違っているのか不明です。
わかる方いましたらご教授お願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/08 04:41
2020/04/08 13:00
2020/04/08 13:43