Найти - Пользователи
Полная версия: Sockets C# to Python
Начало » Центр помощи » Sockets C# to Python
1
rubitwa
Всем привет, не знаю каким образом переписать, может поможете
код на шарпе, клиентская часть
EndPoint packetSender = (EndPoint) new IPEndPoint(IPAddress.Any, 0);
byte[] buf = new byte[2048];

while ( state != State.Disconnected )
{
try
{
if ( !sock.Poll(150000, SelectMode.SelectRead) && DateTime.Now > timeOut )
{
DebugLog.WriteLine("UdpConnection", "Connection timed out");
state = State.Disconnected;
break;
}

while ( sock.Poll(10000, SelectMode.SelectRead) )
{
int length = sock.ReceiveFrom(buf, ref packetSender);

if ( !packetSender.Equals(remoteEndPoint) )
continue;

timeOut = DateTime.Now.AddSeconds(TIMEOUT_DELAY);

MemoryStream ms = new MemoryStream(buf, 0, length);
UdpPacket packet = new UdpPacket(ms);

ReceivePacket(packet);
}
}
catch ( SocketException e )
{
DebugLog.WriteLine("UdpConnection", "Critical socket failure: " + e.ErrorCode);
state = State.Disconnected;
break;
}
if ( state != State.Disconnected )
SendPendingMessages();

if ( inSeq != inSeqAcked )
SendAck();

if ( state == EState.Disconnecting && outPackets.Count == 0 )
{
DebugLog.WriteLine("UdpConnection", "Graceful disconnect completed");
state = State.Disconnected;
}
}

DebugLog.WriteLine("UdpConnection", "Calling OnDisconnected");
OnDisconnected(EventArgs.Empty);

я в шарпе не очень, но как я понял функция sock.Poll(150000, SelectMode.SelectRead) определяет есть ли данные для recvfrom или нет, плюс таймаут в микросекундах на данное действие, есть ли что то подобное на питоне?

рылся рылся в гуле…
select.select([sock], [], [], x)[0]
вместо
sock.Poll(x, SelectMode.SelectRead)
пойдёт?
py.user.next
rubitwa
есть ли что то подобное на питоне?
python.org. select
rubitwa
ага, проверить полностью скрипт ещё пока не могу, но на тесте select.select() сработало как надо))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB