Как узнать, приняли ли Socket Sender и Receiver соединения или нажали кнопку Tkinter - PullRequest
0 голосов
/ 30 октября 2018

-Моя основная проблема - использование условий с сокетами. Python3 отправляет и получает одновременно .... -так когда я настраиваю Сервер и Клиент на одном устройстве, а Клиент и Сервер используют один и тот же порт, но другой IP-адрес на другом внешнем устройстве, и я хочу запускать сокеты команд одновременно .... с помощью кнопок tkinter Вызывается Принять и Запретить, чтобы принять соединение или отрицать это

при запуске одного и того же кода на обоих устройствах Python останавливается и блокирует

- Вот мой код:

на стороне клиента

   def accept():
  if accpt == False:
       cnfrm = messagebox.askokcancel("accept","Would you like to ACCEPT ?")
    if cnfrm == True:
        print("connection is made........")
        s.send(msg)
    else:
        print("connection denied...............")
        s.close()
reply = s.recv(1024)        
if reply:
        print(str(reply))
else:
    s.send("warning....no connection".encode('utf-8'))
    pymsgbox.alert('exception. click OK to close session:', 'cancel')
    s.close()

НА стороне сервера

                 import socket

           sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

           host_name = socket.gethostname() #To get the name of host
           port_number = 8888
           print("The name of local machine"),host_name 
           host_port_pair = (host_name,port_number) #A tuple
           print(host_port_pair)
           sock.bind(host_port_pair) #Bind address to the socket

           sock.listen(10)
           conn_obj,addr = sock.accept()
           while True:
          msg_from_client = conn_obj.recv(2048)
          if not msg_from_client:
                 print("<...No Reply.from server.> ")
                 conn_obj.close()
          else:
                 print("FROM CLIENT ===> ")
                 print(msg_from_client)
                 receive = msg_from_client
                 sock.close()
                 conn_obj.send("Thanks for your connection") 
                  conn_obj.send(host_name.encode('utf-8'))
         conn_obj.close()   
          #Closing the socket
         sock.close()

уже попробовал сокеты recv с циклом, но без прогресса может кто-нибудь показать мне, что я делаю не так, и о функции deny (), используемой для закрытия сокета, и большое спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...