Thread overview | ||||||
---|---|---|---|---|---|---|
|
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 | ||||
---|---|---|---|---|
| ||||
Posted in reply to Evan Davis | 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 | ||||
---|---|---|---|---|
| ||||
Posted in reply to Paulo Pinto | 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 | ||||
---|---|---|---|---|
| ||||
Posted in reply to David Nadlinger | 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
|
Copyright © 1999-2021 by the D Language Foundation