質問
error: [Errno 57] Socket is not connected
ソケットを初期化したのにを受け取るのはなぜですか? 完全なコードはpaste binにありますが、ここで提供したものを自由にチェックしてください。
バックグラウンド
ソケット サーバーの基本的な GUI を作成しています。スクリプトの 2 つの部分 (GUI とサーバー) の通信に問題があります。サーバー部分は機能的に書かれていますが、Tkinter GUI は OOP です。GUI は、実行するサーバーの一部を呼び出します。send_msg
サーバーは完璧ですが、 (ソケットを使用してメッセージを送信する)関数を呼び出すたびに、エラーが発生します。
[Errno 57] Socket is not connected
コード
メソッドではGUI
__init__
、関数を呼び出しstart_up()
ます。関数はソケットを開き、それぞれのアドレスにバインドします。関数は次のとおりです。
def start_up():
HOST = socket.gethostname()
PORT = 2468
print "HOST: %s" % (HOST)
print "PORT: %s" % (PORT)
print "\n"
print "-------------------------"
print "\n"
global s
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM )
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
print "Socket Created"
try:
s.bind((HOST, PORT))
except socket.error, msg:
print "Bind failed. Error Code : " + str(msg[0]) + " Message " + str(msg[1])
sys.exit()
print "Socket Bind Complete"
"""
So by specifying 10, it means that if 10
connections are already waiting to be processed,
then the 11th connection request shall be rejected.
This will be more clear after checking socket_accept.
"""
s.listen(10)
print "Socket now listening"
self.send
ボタンを押すたびに、メソッドが呼び出され、class_send_msg
メソッドがsend_msg(s)
関数を呼び出します。send_msg
コードは次のとおりです。
def send_msg(s):
#Send some data to the remote server
message = app.message.get("0.0", END)
#set the whole string
s.sendall(message)
myHistory = open("history.txt", "a+")
myHistory.write(message)
最後に、受け取ったコンソール メッセージ (トレースバック付き):
HOST: ****.local
PORT: 2468
-------------------------
Socket Created
Socket Bind Complete
Socket now listening
Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1410, in __call__
return self.func(*args)
File "/Volumes/****'S USB/Python Programs/Sockets/IM Project/Server/Server GUI InDev Class.py", line 160, in class_send_msg
send_msg(s)
File "/Volumes/****'s USB/Python Programs/Sockets/IM Project/Server/Server GUI InDev Class.py", line 97, in send_msg
s.sendall(message)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
error: [Errno 57] Socket is not connected