Уведомления

Группа в Telegram: @pythonsu

#1 Март 28, 2015 20:49:16

rubitwa
Зарегистрирован: 2015-03-28
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Sockets C# to Python

Всем привет, не знаю каким образом переписать, может поможете
код на шарпе, клиентская часть

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)
пойдёт?

Отредактировано rubitwa (Март 28, 2015 20:52:59)

Офлайн

#2 Март 28, 2015 22:06:49

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9741
Репутация: +  843  -
Профиль   Отправить e-mail  

Sockets C# to Python

rubitwa
есть ли что то подобное на питоне?
python.org. select



Офлайн

#3 Март 28, 2015 23:06:15

rubitwa
Зарегистрирован: 2015-03-28
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Sockets C# to Python

ага, проверить полностью скрипт ещё пока не могу, но на тесте select.select() сработало как надо))

Отредактировано rubitwa (Март 28, 2015 23:09:37)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version