Re: recv blocks although socket is ready



But non-blocking mode is what implemented in winsock from BSD, that should
work on any platform, so worth to try that for sure, OTOH check if really
data arrived with some kind of sniffer at that moment.
Arkady

<314.michael@xxxxxxxxx> wrote in message
news:1163261680.469048.85120@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Because this is a cross plattform application for AIX, Darwin, FreeBSD,
IRIX, IRIX64, Linux, OSF1, SunOS and Windows. I doesnt' make sense to
change something which works on all other plattforms and which ought to
work on Windows too. I'd rather like to know if this is a known issue
with blocking sockets, select and receive. If so I'd implement a
temporary fix until the issue is being addressed. If not, well I guess
I'm on my own ;-)

Michael

Alexander Nickolov wrote:
Why don't you make your socket non-blocking? Then
you'd get WSAEWOULDBLOCK which you can ignore.

--
=====================================
Alexander Nickolov
Microsoft MVP [VC], MCSD
email: agnickolov@xxxxxxxx
MVP VC FAQ: http://www.mvps.org/vcfaq
=====================================

<314.michael@xxxxxxxxx> wrote in message
news:1163184119.063002.123900@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
I have a strange problem using select() and recv(). Intermittedly it
occurs, that even though select() reports the socket to be readable the
following call to recv() blocks. When I shutdown the other peer of the
connection recv() returns and WSAGetLastError() returns WSAESHUTDOWN.
This only occures on our Dell Workstation PWS670. I couldn't reproduce
it on a different machine. I replaced the NIC with a different modell
from a different vendor and installed a different driver but the
problem persited. Running the same app on the same hardware under Linux
I was not able to reproduce the problem though.

Another point which seems worth noting is, that the problem occurs more
frequently when there is some UDP traffic on another socket. This
traffic is consumed by another thread in my app which isn't affected by
the blocking of the main thread.

My setup:
- Dell Workstation PWS670 4xXeon 3.6GHz, 3GB RAM,
- Intel(R) PRO/1000 MTW NIC or ProG-2000S (with Realtek driver)
- Windows XP SP2 (almost) fully patched

Any ideas?

Thanks,
Michael




.



Relevant Pages

  • Re: Apps that make switching easy and worth it!
    ... Clearly nobody thought that was worth ... Windows 2 had a pretty decent graphics engine as such things ... If there were some category of app you ... inconvenient to write for a given platform that nobody writes it. ...
    (comp.sys.mac.advocacy)
  • Re: correct way to use an I/O thread to emulate old blocking hook behavior?
    ... If you've ever seen a "hung" app, ... So, instead, the "blocking hook" was created. ... because of course it makes your Windows ... socket operations completing. ...
    (microsoft.public.win32.programmer.networks)
  • Re: Info on Tcls channel system (specifically file events) needed
    ... >I don't know a thing about windows, so the following may be utterly ... but in unix I would simply open a domain socket and use ... I do know that there are other means than shared memory to have 2 apps ... One app is of course Tcl based, but the other need not be. ...
    (comp.lang.tcl)
  • Re: Win32 talking to *nix question
    ... If you can open a socket in delphi, you should be able to get this to work ... sub time_stamp { ... > I have a small Delphi app that runs under Windows. ...
    (borland.public.delphi.non-technical)
  • Re: Socket.Disconnect Method
    ... Although the exception list in the MSDN documentation ... Windows XP SP2. ... An error occurred when attempting to access the socket. ... use the SocketException.ErrorCode property to obtain the specific error code. ...
    (microsoft.public.vsnet.general)

Loading