Я не знаю, возможно ли сделать то, что вы просите, но в этом нет необходимости. Просто не читайте из сокета, если нечего читать; используйте select.select
для проверки сокета на наличие данных.
изменение:
data = self.clientSocket.recv(1024)
print "Got data: ", data
self.clientSocket.send(data)
на что-то вроде этого:
r, _, _ = select.select([self.clientSocket], [], [])
if r:
data = self.clientSocket.recv(1024)
print "Got data: ", data
self.clientSocket.send(data)
РЕДАКТИРОВАТЬ: Если вы хотите предотвратить вероятность того, что сокет был закрыт, поймать socket.error
.
do_read = False
try:
r, _, _ = select.select([self.clientSocket], [], [])
do_read = bool(r)
except socket.error:
pass
if do_read:
data = self.clientSocket.recv(1024)
print "Got data: ", data
self.clientSocket.send(data)