У меня есть получатель и отправитель программа, которая работает нормально. Но проблема в том, что отправитель отправляет данные и закрывается, но компьютер получателя все еще слушает и не закрывает сокет [Я много пробовал, пожалуйста, дайте мне точное решение]
файл sender.py
import socket
import time
import sys
import time
import xlrd
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostbyname('192.168.225.12')
port = 9999
serversocket.bind((host, port))
serversocket.listen(10)
workbook = xlrd.open_workbook("E:/Drdo/airline2.xls")
worksheet = workbook.sheet_by_name("Sheet1")
total_rows = worksheet.nrows
total_cols = worksheet.ncols
table = list()
record = list()
clientsocket,addr = serversocket.accept()
print("Got a connection from %s" % str(addr))
for x in range(5):
t=time.time()
while True:
if time.time()-t>1:
l=worksheet.cell(x,0).value
k=worksheet.cell(x,1).value
t=time.time()
myMessage = str(l)
myMessage1 = str(k)
print('sending value: ',l)
print('sending value: ',k)
clientsocket.send(myMessage.encode('utf-8'))
clientsocket.send(myMessage1.encode('utf-8'))
break
#clientsocket.close()
файл receive.py
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostbyname('192.168.225.12')
SIZE=1024
port = 9999
s.connect((host, port))
while True:
data = s.recv(SIZE)
data1 = s.recv(SIZE)
c = data.decode()
d = data1.decode()
x = float(c)
y = float(d)
print("printing X :", x)
print("printing Y :", y)
s.close()
Я думаю, что программа-получатель не выходит из цикла while, так что она не закрывает сокет.Как сделать так, чтобы отправитель отправлял все данные получателю из цикла while и закрывал сокет.