1

ボタンが2つあります。接続と切断。初めて接続を押すと、クライアントはサーバー(localhost:4106)に正常に接続し、切断を押すと、クライアントは切断されます。私の問題は、もう一度「接続」を押すと、クライアントがサーバーに再接続せず、エラーメッセージが表示されることです:http://i.imgur.com/dkvos.png

これは、ソケット接続を再利用できないことが原因だと思いますか?これに対する回避策はありますか?ありがとう

#!/usr/bin/python          

import socket               
import Tkinter
import tkMessageBox

top = Tkinter.Tk()

s = socket.socket()       
host = '127.0.0.1' 
port = 4106              

def connect():
    s.connect((host, port))

def disconnect():
    s.close()

ConnectBtn = Tkinter.Button(top, text ="Connect", command = connect)

DisconnectBtn = Tkinter.Button(top, text ="Disconnect", command = disconnect)

ConnectBtn.pack()
DisconnectBtn.pack()

top.mainloop()
4

1 に答える 1

-1

このコード tcl/tk を python で書き直す方法はわかりませんが、解決策の良い出発点になる可能性があります。Scott Nichols が共有するコードは次のとおりです。このコードは、接続が失われた場合にクライアントがサーバーに自動的に再接続する方法を示しています。

サーバーへの自動再接続に成功したこのコードを使用します。

def open_connection():
    data0=''

    try:
        # Create a TCP/IP socket
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

        # Connect the socket to the port where the server is listening
        server_address = ('192.168.0.100', 8000)
        sock.settimeout(10)     # TimeOut 5 secunde

        while True:

            try:
                sock.connect(server_address)
                message = 'new connection'
                sock.sendall(message)

                # Look for the response
                amount_received = 0
                data0=sock.recv(1024)
                amount_received = len(data0)
                return

            finally:
                wNET = 0
                pass

    except:
        sock.close()
        time.sleep(60)
        del data0
于 2016-05-12T08:06:03.750 に答える