Сервер сокетов FreeP IE python от веб-клиента Chrome - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу общаться на локальном хосте с 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()
...