Ich erstelle epoll
und registrieren einige nicht blockierende Sockets, die versuchen, mit geschlossenen Ports auf localhost zu verbinden. Warum epoll
sagt mir, dass ich in diesen Socket schreiben kann (es gibt Ereignis für einen der erstellten Socket mit Eventmask enthalten EPOLLOUT)? Aber dieser Sockel öffnet sich nicht und wenn ich versuche, etwas zu senden, bekomme ich einen Fehler Connection refused
.Epoll Ereignisse für das Verbinden von Sockets
Eine andere Frage - was bedeutet sogar EPOLLHUP? Ich dachte, dass dies ein Ereignis für eine abgewiesene Verbindung ist. Aber wie in diesem Fall kann Ereignis gleichzeitig EPOLLHUP und EPOLLOUT Ereignisse haben?
Beispielcode auf Python:
import socket
import select
poll = select.epoll()
fd_to_sock = {}
for i in range(1, 3):
s = socket.socket()
s.setblocking(0)
s.connect_ex(('localhost', i))
poll.register(s, select.EPOLLOUT)
fd_to_sock[s.fileno()] = s
print(poll.poll(0.1))
# prints '[(4, 28), (5, 28)]'
Oh, natürlich =) Danke, ich hatte ein Missverständnis, wie die 'Umfrage' funktioniert. –