質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3841閲覧

Pythonにてsocket通信ができない

Yuta_for

総合スコア21

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/04/06 16:38

編集2020/04/08 04:40

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

エラーの内容としてクライアント側でそもそも送信するためのメッセージが生成されていないように思いましたが、何が間違っているのか不明です。
わかる方いましたらご教授お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

0~1023番のポートはウェルノウンポートと呼ばれ、UNIX系ではスーパユーザでないと使えません。なので62を使おうとして権限エラーになるのは普通の結果です。

違う番号にするべきなのですが、詳細は以下などを参考にしてください。

ポート番号の種類

種類範囲内容
WELL KNOWN PORT NUMBERS0番 - 1023番一般的なポート番号
REGISTERED PORT NUMBERS1024番 - 49151番登録済みポート番号
DYNAMIC AND/OR PRIVATE PORTS49152番 - 65535番自由に使用できるポート番号

ポート (コンピュータネットワーク) - Wikipedia

49152以降で選んでおけば間違いないでしょう。念の為、決めた番号ですでに使ってるプロセスがいないかどうか確認しておくと、尚良いかもしれません。お試しなら、ぶつかってから考えても良いようなことなのですが。

投稿2020/04/06 20:59

編集2020/04/06 21:01
hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yuta_for

2020/04/08 04:41

ありがとうございます。 更新しましたが、その後新たな問題が出てしまいました。 もしこちらもわかるようでしたらご教授願いますでしょうか?
hayataka2049

2020/04/08 13:00

ドット.ではなくガンマ,なのでしようね。
Yuta_for

2020/04/08 13:43

ああああ! うっかりしてました、直したら上手くいきました。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問