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

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

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

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

Q&A

3回答

1229閲覧

『ゼロから作る暗号通貨』P38-40あたりの質問です

yukinori_hamada

総合スコア13

Python

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

0グッド

0クリップ

投稿2019/02/22 02:41

編集2019/02/22 02:54

client.pyとserver.pyファイルを作って、server.pyをrunningしたんですが、うまく行かないです。

以下が見本のコマンドです

python

1python3 server.py 2my ip address is now ... 10.1.1.27 ← ※1 Waiting for the connection ... 3Connected by .. ('10.1.1.27', 55017) 4Waiting for the connection ... 5Hello! This is test message from my sample client!

以下が自分のパソコンで、コマンドの操作が途中で止まってしまいます。何がまずいのか知りたいです。

Python

1python server.py 2my ip address is now ... 192.168.100.101 3Waiting for the connection ... 4

以下が作ったファイルです

python

1#client.py 2#coding:utf-8 3import socket 4 5my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 6#ここは環境に合わせた接続先を入れる 7my_socket.connect(('10.1.1.27', 50030)) 8my_text = "Hello! This is test message from my sample client!" 9my_socket.sendall(my_text.encode('utf-8')) 10

python

1#server.py 2#coding:utf-8 3from concurrent.futures import ThreadPoolExecutor 4import socket 5import os 6 7def __handle_message(args_tuple): 8 9 conn, addr, data_sum = args_tuple 10 while True: 11 data = conn.recv(1024) 12 data_sum = data_sum + data.decode('utf-8') 13 14 if not data: 15 break 16 17 if data_sum != '': 18 print(data_sum) 19 20def __get_myip(): 21 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 22 s.connect(('8.8.8.8', 80)) 23 return s.getsockname()[0] 24 25def main(): 26 27 #AF_INET : IPv4ベースのアドレス体系を使うということ 28 29 #SOCK_STREAM : TCP/IPを使うということ 30 my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 31 32 #多重接続になってもいいようにスレッドで処理するようにする 33 executor = ThreadPoolExecutor(max_workers=os.cpu_count()) 34 35 #開くポート番号は適当に選んだだけ 36 myhost = __get_myip() 37 print('my ip address is now ...', myhost) 38 my_socket.bind((myhost, 50030)) 39 #同時に接続してくる相手の数。今回はテストなのでとりあえず1 40 my_socket.listen(1) 41 42 while True: 43 #接続があるまで待機 44 print('Waiting for the connection ...') 45 conn, addr = my_socket.accept() 46 print('Connected by ..', addr) 47 data_sum = '' 48 executor.submit(__handle_message, (conn, addr, data_sum)) 49 50if __name__ == '__main__': 51 main() 52

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

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

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

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

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

maisumakun

2019/02/22 02:45

「うまくいかない」というのは、具体的にどんな状況になっていますか?エラーメッセージなどが出ているなら、実際のものを書き込んでください。
guest

回答3

0

実行手順は書籍に記載されているものと思われますが…

まずclient.pyの以下の接続先IPを、自身の環境に合わせて書き換える必要があります。

Python

1#client.py 2#ここは環境に合わせた接続先を入れる 3#my_socket.connect(('10.1.1.27', 50030)) 4my_socket.connect(('192.168.100.101', 50030))

その後client.pyを実行してください。
サーバに接続しメッセージ送信されてターミナル上にメッセージが表示されるはずです。

投稿2019/02/22 02:59

can110

総合スコア38262

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

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

0

Python

1#ここは環境に合わせた接続先を入れる 2my_socket.connect(('10.1.1.27', 50030))

ここのv4が違うのでは?
環境に合わせた接続先と書かれているためその環境設定等を調べるページぐらい存在するはずですよ。
もう一度その本を読みましょう。

投稿2019/02/22 02:58

stdio

総合スコア3307

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

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

0

以下が自分のパソコンで、コマンドの操作が途中で止まってしまいます。何がまずいのか知りたいです。

特に問題ないのではないかと思います。サーバは接続を待つのが仕事なので、接続されていない状態では何も表示されません。

投稿2019/02/22 02:55

maisumakun

総合スコア145183

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問