Сокет не приближается в приемном компьютере Python - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть получатель и отправитель программа, которая работает нормально. Но проблема в том, что отправитель отправляет данные и закрывается, но компьютер получателя все еще слушает и не закрывает сокет [Я много пробовал, пожалуйста, дайте мне точное решение]

файл 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 и закрывал сокет.

...