Windows Socket Timeout

2012-03-22 Thread 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


Re: Windows Socket Timeout

2012-03-22 Thread Paulo Pinto

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


Re: Windows Socket Timeout

2012-03-22 Thread David Nadlinger

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


Re: Windows Socket Timeout

2012-03-22 Thread James Miller
On 23 March 2012 12:52, David Nadlinger  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