AF_UNIX 소켓과 함께 asyncore를 사용할 때 몇 가지 문제가 있습니다. 이 코드 AF_UNIX 소켓과 함께 작동하는 파이썬 asyncore 문제
import asyncore, socket, os
class testselect(asyncore.dispatcher):
path = '/tmp/mysocket'
def __init__(self):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_UNIX, socket.SOCK_DGRAM)
self.bind(self.path)
self.buffer = 'buffer'
def handle_connect(self):
print 'handle_connect'
pass
def handle_close(self):
print 'handle_close'
if os.path.exists(self.path)
os.remove(self.path)
self.close()
def handle_read(self):
print 'handle_read'
print self.recv(8192)
def writable(self):
print 'writable'
return (len(self.buffer) > 0)
def handle_write(self):
print 'handle_write'
sent = self.send(self.buffer)
self.buffer = self.buffer[sent:]
client = testselect()
asyncore.loop()
내가 코드 그것은 immediatly 종료되고 읽기 대기 및 기록하지 않습니다
$ python select_prova.py
writable
handle_connect
handle_write
handle_close
$
을 실행하면
. 난 항상False
을 반환 쓰기() 메소드를 강제로 코드를 변경하면 입력을 제대로 기다려 난 (쓰기 읽기 전용이
$ socat readline UNIX:/tmp/mysocket
그러나 같은 socat와 통신 할 수있는 논리적으로하지 않습니다 작동하기 때문에 쓰기() False
을 반환). 내 코드에 오류가 있습니까? 아니면 asyncore/select()를 사용하여 AF_UNIX 소켓을 관리 할 수 있습니까?
이는 데있어 정말 흥미있는 어려움이다. – Omnifarious