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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

Python

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

Q&A

2回答

7201閲覧

ノンブロッキングなソケット通信を行なうPythonプログラムで,クライアントがデータを送信した時にサーバ側にデータが表示されない

abea

総合スコア32

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

Python

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

0グッド

0クリップ

投稿2018/07/31 12:31

編集2022/01/12 10:55

サーバプログラム

python

1import socket 2from time import sleep 3s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) 4 5s.bind(('127.0.1.1',50009)) 6s.listen(5) 7s.setblocking(0) 8while True: 9 #print("a") 10 #sleep(1) 11 try: 12 conn, addr = s.accept() 13 conn.setblocking(0) 14 print ('connection from',addr) 15 data=conn.recv(1024) 16 print ('recived: ',data,len(data)) 17 18 except: 19 pass

クライアントプログラム

python

1import socket 2 3s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) 4s.connect(('127.0.1.1',50009)) 5while True: 6 data = input("Client>") 7 data = data.encode('utf-8') 8 s.send(data)

この2つのノンブロッキングな通信を行なうプログラムを実行したのですが,クライアントから送信したデータが表示されません.
サーバ側ではクライアントが接続されたときに
print ('connection from',addr)
この部分しか表示されませんでした.これは何が原因なのでしょうか?クライアント側がそもそもデータを送ることができていないのでしょうか?

ifconfigの結果は以下のようになっています.
enp0s31f6 Link encap:イーサネット ハードウェアアドレス c8:5b:76:03:9b:4c
UP BROADCAST MULTICAST MTU:1500 メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
割り込み:16 メモリ:f1200000-f1220000

lo Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
inet6アドレス: ::1/128 範囲:ホスト
UP LOOPBACK RUNNING MTU:65536 メトリック:1
RXパケット:310 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:310 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1
RXバイト:24434 (24.4 KB) TXバイト:24434 (24.4 KB)

wlp1s0 Link encap:イーサネット ハードウェアアドレス ac:2b:6e:53:e1:66
inetアドレス:192.168.1.10 ブロードキャスト:192.168.1.255 マスク:255.255.255.0
inet6アドレス: fe80::d392:7d45:e2b:f91a/64 範囲:リンク
inet6アドレス: 240b:13:86a0:3200:5498:e158:cfa1:83ae/64 範囲:グローバル
inet6アドレス: 240b:13:86a0:3200:23d8:105b:e92a:7e19/64 範囲:グローバル
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
RXパケット:395 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:437 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:183151 (183.1 KB) TXバイト:72075 (72.0 KB)

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

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

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

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

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

y_waiwai

2018/07/31 13:47

2台のPCで通信させようとしてるんですか?それぞれのネットワーク設定、IPアドレス、ネットマスクなどを提示してください
abea

2018/07/31 13:48

同一PCで2つの端末を開いて実行しています。
y_waiwai

2018/07/31 13:50

そのPCのIPアドレスはどうなってますか?
guest

回答2

0

ノンブロッキング

上の言葉を辞書で引いてみてください。そして質問文のコードを見直してください。
前の回答でselectを使ってくださいって、回答ありませんでしたっけ・・・・
要件がよく分かりませんが、ノンブロッキングモードを絶対に使いたいんですか?
ThreadingTCPServerクラスを使用するのはダメなのでしょうか。。

投稿2018/07/31 15:03

umyu

総合スコア5846

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

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

0

s.bind(('127.0.1.1',50009))

とは、一体どこに向かって通信させようとしてるんでしょうか。

投稿2018/07/31 13:58

y_waiwai

総合スコア87719

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

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

abea

2018/07/31 14:10

127.0.0.1にすれば良いということでしょうか? そうしても先ほどまでと同様に上手く動きませんでした.
y_waiwai

2018/07/31 14:13

それでうまくいくとはいってません 別のPCもってきて、それで通信させましょうよ
abea

2018/07/31 14:39

bindの引数のIPアドレスとconnectの引数のIPアドレスが同一の127.0.0.1だとしたら同一PC内では正しく通信できるのではないのでしょうか? 別のPCをもってくる必要性がわかりません. 無知で申し訳ありません.
y_waiwai

2018/07/31 23:17

ならなぜわざわざ127.0.1.1.にw
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問