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 するたいです。
数日格闘していますが、どうにもこれから先に進めません。
対策・解決策の御教示をお願いします。
回答1件
あなたの回答
tips
プレビュー