Page 1 of 1
					
				Closing the connection server
				Posted: Wed Nov 30, 2011 1:20 pm
				by User_Russian
				As an Internet client (connection open function OpenNetworkConnection ()), may determine that the connection was broken server?
I have used this method: 
Code: Select all
DisableDebugger
Test=0
SendNetworkData(Connect, @Test, 0)
Err = WSAGetLastError_()
EnableDebugger
If Err
  *Mem = AllocateMemory(1024)
    If *Mem
      FillMemory(*Mem, 1024, 0)
      Test=FormatMessage_(#FORMAT_MESSAGE_FROM_SYSTEM, 0, Err, 0, *Mem, 1024, 0)
      If Err>0
        ErrorText.s = PeekS(*Mem, Test)
      EndIf
      FreeMemory(*Mem)
    EndIf
 EndIf
It works, but only for TCP connections.
And if you use UDP, then not working properly.
How to verify that the server connection is broken?
 
			 
			
					
				Re: Closing the connection server
				Posted: Thu Dec 01, 2011 1:54 am
				by RichAlgeni
				Try using the windows API function 
ioctlsocket. If there is no error, 
length will return the number of bytes available to be read.
Code: Select all
Define length
Define result
Define socketHandle.i
; make sure the socket is still valid
socketHandle = ConnectionID(Connect)
result = ioctlsocket_(socketHandle, #FIONREAD, @length)
If result < 0; socket error
    ProcedureReturn result
EndIf
 
			 
			
					
				Re: Closing the connection server
				Posted: Mon Dec 05, 2011 12:52 pm
				by kryptonn
				RichAlgeni wrote:Try using the windows API function ioctlsocket. 
I known that 
User_Russian did not pay for PureBasic, uses the pirate copy, and spreads the pirate copies itself. He has not a moral right to get no support.
http://www.purebasic.fr/english/viewtop ... 02#p367802 
			 
			
					
				Re: Closing the connection server
				Posted: Mon Dec 05, 2011 4:35 pm
				by AndyMK
				User_Russian wrote:As an Internet client (connection open function OpenNetworkConnection ()), may determine that the connection was broken server?
I have used this method: 
Code: Select all
DisableDebugger
Test=0
SendNetworkData(Connect, @Test, 0)
Err = WSAGetLastError_()
EnableDebugger
If Err
  *Mem = AllocateMemory(1024)
    If *Mem
      FillMemory(*Mem, 1024, 0)
      Test=FormatMessage_(#FORMAT_MESSAGE_FROM_SYSTEM, 0, Err, 0, *Mem, 1024, 0)
      If Err>0
        ErrorText.s = PeekS(*Mem, Test)
      EndIf
      FreeMemory(*Mem)
    EndIf
 EndIf
It works, but only for TCP connections.
And if you use UDP, then not working properly.
How to verify that the server connection is broken?
 
You should google UDP and learn as much as you can about it before posting such questions. UDP is a connectionless protocol. When you send a packet of data, you have no way of knowing if the packet got there unless you program that functionality in to it. Detecting a disconnect over UDP is something you have to program yourself.