Я хочу общаться на локальном хосте с FreeP IE из моего браузера с помощью Websockets (сокет импорта). У меня есть тестирование с некоторыми плагинами клиента Websocket в Google Chrome с расширением "Простой клиент Websocket". Я могу запустить приведенный ниже код во FreeP IE без проблем, но я получаю сообщение об ошибке в строке 48, когда нажимаю кнопку подключения sh из тестового расширения клиента. В чем проблема в conn.recv?
# Echo server program
import socket
import sys
import os
HOST = '127.0.0.1' # Symbolic name meaning all available interfaces
PORT = 50007 # Arbitrary non-privileged port
s = None
for res in socket.getaddrinfo(HOST, PORT, socket.AF_INET, socket.SOCK_STREAM, 0, socket.AI_PASSIVE): #socket.AF_UNSPEC y socket.SOCK_STREAM
af, socktype, proto, canonname, sa = res
try:
s = socket.socket(af, socktype, proto)
except socket.error as msg:
diagnostics.debug('Hubo un Socket error')
s = None
continue
try:
s.bind(sa)
s.listen(1)
except socket.error as msg:
s.close()
s = None
continue
break
diagnostics.watch(s)
diagnostics.watch(af)
diagnostics.watch(socktype)
diagnostics.watch(proto)
diagnostics.watch(canonname)
diagnostics.watch(sa)
diagnostics.watch(res)
if s is None:
print("could not open socket")
diagnostics.debug('Dentro del if f is None')
sys.exit(1)
conn, addr = s.accept()
diagnostics.watch(conn)
conn.setblocking(False) #Estaba a False pero lo puse a True para probar y con True no da error
print 'Connected by', addr
diagnostics.debug('Conectado a ')
diagnostics.debug(addr)
try:
while True: #1:
diagnostics.debug('Dentro del while True')
data = conn.recv(8192) #4096 8192
#d = s.recvfrom(8192)
#data2 = d[0]
#addr2 = d[1]
diagnostics.watch(data)
if data:
diagnostics.debug('Dentro del if data')
#reply = 'OK...' + data2
#s.sendto(reply, addr2)
conn.send('OK...' + data)
if not data:
break
#conn.send(data)
except ValueError:
diagnostics.notify(ValueError)
conn.close()
finally:
conn.close()
conn.close()