Open kongxa opened 7 months ago
Possibly, so the code later made a judgment:
socket->setOnRead([weak_self, weak_helper, id](const Buffer::Ptr &buf, struct sockaddr *addr, int addr_len) {
auto strong_self = weak_self.lock();
if (!strong_self) {
return;
}
//快速判断是否为本会话的的数据, 通常应该成立
if (id == makeSockId(addr, addr_len)) {
if (auto strong_helper = weak_helper.lock()) {
emitSessionRecv(strong_helper, buf);
}
return;
}
//收到非本peer fd的数据,让server去派发此数据到合适的session对象
strong_self->onRead_l(false, id, buf, addr, addr_len);
});
可能 所以后面代码做了判断:
socket->setOnRead([weak_self, weak_helper, id](const Buffer::Ptr &buf, struct sockaddr *addr, int addr_len) { auto strong_self = weak_self.lock(); if (!strong_self) { return; }
//快速判断是否为本会话的的数据, 通常应该成立
if (id == makeSockId(addr, addr_len)) {
if (auto strong_helper = weak_helper.lock()) {
emitSessionRecv(strong_helper, buf);
}
return;
}
//收到非本peer fd的数据,让server去派发此数据到合适的session对象
strong_self->onRead_l(false, id, buf, addr, addr_len);
});
`TRANS_BY_GITHUB_AI_ASSISTANT`
In UdpServer.cpp, after UdpServer receives the first data packet from the peer, it creates a new socket based on the local address and peer address. When creating a new socket, bindUdpSock is executed first. Will other data packets from the peer be received in the moment before bindPeerAddr?
From my current program, it seems that this situation exists.
TRANS_BY_GITHUB_AI_ASSISTANT