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

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

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

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

Q&A

解決済

1回答

3171閲覧

pythonで、チャット。TimeoutError: [WinError 10060] でストップしてしまう

bontori

総合スコア1

Python

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

0グッド

0クリップ

投稿2023/03/23 00:58

python でチャットプログラムを実現したい。
そこで「松田晃一著、Pythonライブラリの使い方」を利用してみました。

① echoサーバーのプログラム

import socket

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) # ソケット作成
print( 'server start' )
s.bind(('',5555)) #IPアドレスとポートをソケットに作成
s.listen(10) #接続用のqueueを用意する
c,addr=s.accept() #クライアントが接続にくるまで待つ
print( 'connected' ) #接続してきたのを表示

while True:
data=c.recv(1024) #クライアントからのデータを受信(1024バイトまで)

print( 'clilent:',str(data,encoding='utf-8')) #受信データの表示

c.send(bytes('メッセージ受け取りました',encoding='utf-8')) #クライアントへ送信

c.send(data) # クライアントへ送信

s.close() #ソケットを閉じる

=====================

② clientのプログラム

import socket

s =socket.socket(socket.AF_INET, socket.SOCK_STREAM) # ソケットの作成
s.connect(('127.0.0.1', 5555)) # サーバに接続
while True:

msg= input( 'メッセージ: ' ) # メッセージの入力
s.send(bytes(msg,encoding='utf-8')) # サーバへ送信
data=s.recv(1024) # サーバから受信
print('server: ',str(data,encoding='utf-8')) # 表示

同じPCで ①を動かして、②も動かすと、うまくいきました。
そこで、違うPCで①を動かしました。
②の
s.connect(('127.0.0.1', 5555))

s.connect(('192.168.100.30', 5555))
など、異なるPCのIPアドレスにして動かしました。
しかし、IDLEの画面に
「TimeoutError: [WinError 10060] 接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかったため、確立された接続は失敗しました。」
と表示されてしまいます。

接続はしているみたいですが、Timeout するたいです。
数日格闘していますが、どうにもこれから先に進めません。
対策・解決策の御教示をお願いします。

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

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

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

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

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

y_waiwai

2023/03/23 01:37

このままではコードが読めないので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
bsdfan

2023/03/23 04:35

コードの部分は読んでませんが、違うPCで動かないということなので、ファイアウォールの設定を確認してみてはどうでしょう。
bontori

2023/03/23 05:17

何だか、読みにくい質問ですみませんでした。 プログラムの部分を、御指摘の通り </> の部分に記載してみました。 読みやすくなったかと思います。 ファイアウォールですか。 確認してみます。 ① echoサーバーのプログラム import socket s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) # ソケット作成 print( 'server start' ) s.bind(('',5555)) #IPアドレスとポートをソケットに作成 s.listen(10) #接続用のqueueを用意する c,addr=s.accept() #クライアントが接続にくるまで待つ print( 'connected' ) #接続してきたのを表示 while True: data=c.recv(1024) #クライアントからのデータを受信(1024バイトまで) print( 'clilent:',str(data,encoding='utf-8')) #受信データの表示 c.send(bytes('メッセージ受け取りました',encoding='utf-8')) #クライアントへ送信 c.send(data) # クライアントへ送信 s.close() #ソケットを閉じる ===================== ② clientのプログラム import socket s =socket.socket(socket.AF_INET, socket.SOCK_STREAM) # ソケットの作成 s.connect(('127.0.0.1', 5555)) # サーバに接続 while True: msg= input( 'メッセージ: ' ) # メッセージの入力 s.send(bytes(msg,encoding='utf-8')) # サーバへ送信 data=s.recv(1024) # サーバから受信 print('server: ',str(data,encoding='utf-8')) # 表示 --- よろしくお願いします。
bontori

2023/03/23 07:36

マカフィーを利用しており、「ファイアウォールの処置は不要」となっています。 「接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかったため、確立された接続は失敗しました。」となっており、少なくとも、クライエントからサーバーの接続は、一旦はされていると考えられるのですが、サーバーの反応がおかしいということなんでしょうか。
guest

回答1

0

自己解決

ありがとうございます。
マカフィーから、ファイアウォールの設定を無効にしました。
すると無事に接続できるようになりました。
おかげさまで、一応解決です。
助かりました。

投稿2023/03/23 08:00

bontori

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問