View mode: basic / threaded / horizontal-split · Log in · Help
March 22, 2012
Windows Socket Timeout
Hi, I'm trying to write a game sever/client architecture in D, 
but I keep running into problems with the timeouts for windows 
sockets.

On the std.socket documentation page it states that you can't set 
a timeout smaller than 500ms, and I've been experiencing this 
problem first hand. The problem is that I am trying to interlace 
sending packets with receiving packets, and I can't do that at 60 
FPS without having a low timeout.

Two questions: First, can you use select() on UDP sockets?

Second, would it be feasible to have two different sockets 
instead, and use the REUSEADDR option? I'm somewhat worried about 
client-side cheating.

Thanks for any thoughts,
 Evan Davis
March 22, 2012
Re: Windows Socket Timeout
Am 22.03.2012 22:09, schrieb Evan Davis:
> Hi, I'm trying to write a game sever/client architecture in D, but I
> keep running into problems with the timeouts for windows sockets.
>
> On the std.socket documentation page it states that you can't set a
> timeout smaller than 500ms, and I've been experiencing this problem
> first hand. The problem is that I am trying to interlace sending packets
> with receiving packets, and I can't do that at 60 FPS without having a
> low timeout.
>
> Two questions: First, can you use select() on UDP sockets?
>
> Second, would it be feasible to have two different sockets instead, and
> use the REUSEADDR option? I'm somewhat worried about client-side cheating.
>
> Thanks for any thoughts,
> Evan Davis

If you really want performant sockets on Windows, you need to make use
of the Windows specific APIs, and use IO completion ports not select.

--
Paulo
March 22, 2012
Re: Windows Socket Timeout
On Thursday, 22 March 2012 at 23:36:03 UTC, Paulo Pinto wrote:
> If you really want performant sockets on Windows, you need to 
> make use
> of the Windows specific APIs, and use IO completion ports not 
> select.

Depending on what you are trying to achieve, you could always 
consider using enet or (parts of) RakNet.

David
March 23, 2012
Re: Windows Socket Timeout
On 23 March 2012 12:52, David Nadlinger <see@klickverbot.at> wrote:
> On Thursday, 22 March 2012 at 23:36:03 UTC, Paulo Pinto wrote:
>>
>> If you really want performant sockets on Windows, you need to make use
>> of the Windows specific APIs, and use IO completion ports not select.
>
>
> Depending on what you are trying to achieve, you could always consider using
> enet or (parts of) RakNet.
>
> David

Ideally, no matter what platform you're on, you want some form of
non-blocking or asynchronous networking. The easiest way would be a
seperate thread for all networking logic. Especially since you should
probably have a separate thread for your rendering code anyway.

--
James Miller
Top | Discussion index | About this forum | D home