-Моя основная проблема - использование условий с сокетами. 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 (), используемой для закрытия сокета, и большое спасибо