Форум сайта python.su
привет!
что я хочу:
сервер слушает порт (класс ear) и как только появляется соединение - создаёт класс mouth, который будет обмениваться информацией через это соединение. так же можно инициировать соединение самому (через словарь парамаетров класса mouth), задавая адрес назначения.
далее (теста ради) запускаем отдельным тредом asyncore.loop, а основным пытаемся законнектиться к серверу.
import socket,asyncore
class mouth(asyncore.dispatcher):
def __init__(self,**kwargs):
asyncore.dispatcher.__init__(self)
self.buffer=bytes()
if "sock" in kwargs:
self.socket=kwargs["sock"]
elif "host" in kwargs and "port" in kwargs:
self.create_socket(socket.AF_INET,socket.SOCK_STREAM)
self.connect((kwargs["host"],kwargs["port"]))
self.buffer=bytes("YOINK!","utf-8")
def handle_connect(self):
pass
def handle_close(self):
self.close()
def handle_read(self):
print(self.recv(8192))
def writable(self):
return(len(self.buffer)>0)
def handle_write(self):
sent=self.send(self.buffer)
self.buffer=self.buffer[sent:]
class ear(asyncore.dispatcher):
def __init__(self,host,port):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET,socket.SOCK_STREAM)
self.bind((host,port))
self.listen(5)
def handle_accepted(self,sock,addr):
print(repr(addr),sock.getsockname())
mouth(sock=sock)
if __name__=="__main__":
ear("localhost",5555)
import threading
threading.Thread(target=asyncore.loop).start()
mouth(host="127.0.0.1",port=5555)
('127.0.0.1', 3487) ('127.0.0.1', 5555)
b''
Офлайн
да, разобрался. вместо
self.socket=kwargs["sock"]
self.set_socket(kwargs["sock"])
def set_socket(self, sock, map=None):
self.socket = sock
## self.__dict__['socket'] = sock
self._fileno = sock.fileno()
self.add_channel(map)
def add_channel(self, map=None):
#self.log_info('adding channel %s' % self)
if map is None:
map = self._map
map[self._fileno] = self
Офлайн
VANISHED
Отредактировано ntram (Окт. 13, 2022 15:43:40)
Офлайн
ntram, там топик от 2011-го года. Ты его наверх поднимаешь в разделе форума. Люди начинают думать, что человек что-то спросил сегодня и начинают отвечать. Это называется некропостинг.
Отредактировано py.user.next (Июль 6, 2022 21:04:16)
Офлайн
py.user.next
Некротопики поднимают боты. После удаления спама топик выглядит так как будто содержит новые сообщения для мемберов, которые зарегистрировались позднее последнего сообщения в топике
Офлайн
FishHookНу, он претендовал на ум, постил про уязвимость даже, найденную им, а тут не сообразил, что к чему?
После удаления спама топик выглядит так как будто содержит новые сообщения для мемберов, которые зарегистрировались позднее
Отредактировано py.user.next (Июль 7, 2022 14:36:26)
Офлайн
VANISHED
Отредактировано ntram (Окт. 13, 2022 15:43:56)
Офлайн
py.user.next
Спасибо, держи нас в курсе течения своей шизофрении
Офлайн
ntramЭто Emacs закачивает через RSS данные с разных сайтов и формирует из них удобную среду. Поэтому я не завишу от особенностей сайтов, от того, как они там помечают новые и старые сообщения. Да, и поэтому мне не нужно подписываться на YouTube-каналы, жать на колокольчик и так далее, потому что у меня и колокольчика нет, я просматриваю YouTube всегда анонимно, не заходя в аккаунты. А все новые выпуски мне показывает Emacs.
скрипт работает на RSS?
FishHookНу, это ты мне про форум что-то рассказывать стал. Я-то сам себе среду строю, поэтому уже давным-давно ушёл с этого уровня развития, на котором ты размышляешь. Мне как-то похрен на новые сообщения, я их вижу без всякого форумского функционала.
Спасибо, держи нас в курсе течения своей шизофрении
Офлайн
py.user.next
где-то я это уже видел
Офлайн