Программа постоянно получает данные от отправителя.И у меня есть кнопка с галочкой / без галочки, когда я проверяю, что она запускает часть if
... это хорошо.Теперь я отключаю его, затем else
часть запускается и печатает Unchecked going to close socket
, но s.shutdown(10)
& s.close()
не закрывая сокет, это показывает, что ошибка s.shutdown (10) не является объектом сокета ОС [Errno10022] указан неверный аргумент Почему он не закрывает сокет или есть другой способ его закрытия.
Дополнительное требование
если мой сокет снова закрывается, я хочу проверить его (во второй раз), чтобы снова запустить if
part для получения данных от компьютера отправителя.возможно снова запустить сокет, не закрывая мою программу.
def show_markers(self):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostbyname('192.168.225.12')
s.connect((host, port))
scale=0
while True:
if self.iconAction.isChecked():
print ('Checked')
m = QgsVertexMarker(self.iface.mapCanvas())
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)
rect = QgsRectangle(float(x)-scale, float(y)-scale, float(x)+scale, float(y)+scale)
me = self.iface.mapCanvas()
me.setExtent(rect)
me.refresh()
m.setCenter(QgsPointXY(x, y))
m.setColor(QColor(255, 0, 0))
m.setIconSize(7)
m.setIconType(QgsVertexMarker.ICON_X) # or ICON_CROSS, ICON_X
m.setPenWidth(3)
else:
print('Unchecked going to close socket')
s.shutdown(10)
s.close()
Я предполагаю, что он должен работать так:
1-й раз нажмите на кнопку ---> Проверено и если часть запускается [работает]
2-й раз нажмите на кнопку ---> Не отмечена и еще часть запуска, чтобы закрыть сокет [не закрывается]
3-ий раз нажмите на кнопку ---> еще раз проверил и получил данные с компьютера отправителя [возможно ли]