Socket Accept/Connection Question/Problem
Dave
dave at looktowindward.com
Fri Feb 29 07:08:32 EST 2008
On 28 Feb 2008, at 22:00, Alex Tweedly wrote:
> Dave wrote:
>>
>> All I want to do is to know if a Client successfully connected to
>> a Server, surely this is what the openSocket command is for.
>>
> Not quite. The 'open socket' command does try to create the
> connection, but it will not (immediately) tell you whether or not
> it is successful in this attempt. From the Rev docs,
> " The handler continues executing while the connection is being
> established. If you use the write to socket command while the
> connection is opening, the data is buffered and is sent to the host
> as soon as the connection is made."
>
> i.e. you will not get an indication of success or failure immediately.
Yes, I realize that the whole thing is asynchronous, when I say
"call" I meant arrange to have a message sent at some future time.
It's just easier to say "call".
>> Surely the:
>>
>> open socket mySocketAddress with message "ClientSocketOpen"
>>
>> Statement should call "ClientSocketOpen" if the Server accepted
>> the connection or call "socketError" or "socketTimeout" if there
>> was an error? e.g. the Server closed the socket?
> Be wary of that simple word "call". the "open socket" statement
> will not "call" ClientSocketOpen even in the successful case -
> instead it will result in a message being sent SOME TIME LATER to
> that handler. And in the failure case, it will cause a message to
> either socketError or socketTimeOut again, SOME TIME LATER.
Yes, the code I posted should handle that.
>
> Using the code we've discussed on the server, what you will get on
> the client is a socketClosed message. The server will accept the
> connection, which should result in a successful "ClientSocketOpen'
> and then very quickly close it causing a subsequent 'socketClosed'
> message.
Before I didn't have a "socketClosed" handler and I thought that this
might be the missing part of the jigsaw, so I added one, and it does
get called but not till a long time after and sometimes not at all.
The "socketError" handler, resends the connect request after a delay
of 2 seconds (send in time). The "socketClosed" message only seems to
get sent after a few retries whereas it should get sent instead of
the first "socketError", or at least during the 2 second wait before
the connect is called again. Also the error returned is "Error 54
reading socket", when the command that failed was a write, why is this?
Is there a list of the errors returned by the socket commands?
Thanks a Lot
All the Best
Dave
Here is a dump from the Server and Client logs:
---------------------------------------------------
SERVER LOG
--------------------------------------------------
ServerStart - Accept: 6000
192.168.1.111
ServerContactedByClient: 192.168.1.105:50642
ServerContactedByClient, Bad Client: 192.168.1.105:50642 - Closes Socket
ServerContactedByClient: 192.168.1.105:50643
ServerContactedByClient, Bad Client: 192.168.1.105:50643 - Closes Socket
ServerContactedByClient: 192.168.1.105:50644
ServerContactedByClient, Bad Client: 192.168.1.105:50644 - Closes Socket
ServerContactedByClient: 192.168.1.105:50645
ServerContactedByClient, Bad Client: 192.168.1.105:50645 - Closes Socket
ServerContactedByClient: 192.168.1.105:50646
ServerContactedByClient, Bad Client: 192.168.1.105:50646 - Closes Socket
ServerContactedByClient: 192.168.1.105:50647
ServerContactedByClient, Bad Client: 192.168.1.105:50647 - Closes Socket
---------------------------------------------------
CLIENT LOG
--------------------------------------------------
StartOneClient - Connect: 192.168.1.87:6000|looktowindward
ClientSocketOpen, Open Socket: 192.168.1.87:6000|looktowindward
ClientSocketOpen, openSockets:
192.168.1.87:6000|looktowindward
ClientSocketOpen, Write Command: 192.168.1.87:6000|looktowindward
00000027$SYS,Connect,looktowindward
ClientSocketOpen, openSockets:
192.168.1.87:6000|looktowindward
ClientSocketConnectionDataSent, Data Written: 192.168.1.87:6000|
looktowindward
ClientSocketConnectionDataSent, openSockets:
socketError: 192.168.1.87:6000|looktowindward Error 54 reading socket
socketError - openSockets:
StartOneClient - Connect: 192.168.1.87:6000|looktowindward
ClientSocketOpen, Open Socket: 192.168.1.87:6000|looktowindward
ClientSocketOpen, openSockets:
192.168.1.87:6000|looktowindward
ClientSocketOpen, Write Command: 192.168.1.87:6000|looktowindward
00000027$SYS,Connect,looktowindward
ClientSocketOpen, openSockets:
192.168.1.87:6000|looktowindward
ClientSocketConnectionDataSent, Data Written: 192.168.1.87:6000|
looktowindward
ClientSocketConnectionDataSent, openSockets:
socketError: 192.168.1.87:6000|looktowindward Error 54 reading socket
socketError - openSockets:
StartOneClient - Connect: 192.168.1.87:6000|looktowindward
ClientSocketOpen, Open Socket: 192.168.1.87:6000|looktowindward
ClientSocketOpen, openSockets:
192.168.1.87:6000|looktowindward
ClientSocketOpen, Write Command: 192.168.1.87:6000|looktowindward
00000027$SYS,Connect,looktowindward
ClientSocketOpen, openSockets:
192.168.1.87:6000|looktowindward
ClientSocketConnectionDataSent, Data Written: 192.168.1.87:6000|
looktowindward
ClientSocketConnectionDataSent, openSockets:
socketError: 192.168.1.87:6000|looktowindward Error 54 reading socket
socketError - openSockets:
StartOneClient - Connect: 192.168.1.87:6000|looktowindward
ClientSocketOpen, Open Socket: 192.168.1.87:6000|looktowindward
ClientSocketOpen, openSockets:
192.168.1.87:6000|looktowindward
ClientSocketOpen, Write Command: 192.168.1.87:6000|looktowindward
00000027$SYS,Connect,looktowindward
ClientSocketOpen, openSockets:
192.168.1.87:6000|looktowindward
ClientSocketConnectionDataSent, Data Written: 192.168.1.87:6000|
looktowindward
ClientSocketConnectionDataSent, openSockets:
socketError: 192.168.1.87:6000|looktowindward Error 54 reading socket
socketError - openSockets:
StartOneClient - Connect: 192.168.1.87:6000|looktowindward
ClientSocketOpen, Open Socket: 192.168.1.87:6000|looktowindward
ClientSocketOpen, openSockets:
192.168.1.87:6000|looktowindward
ClientSocketOpen, Write Command: 192.168.1.87:6000|looktowindward
00000027$SYS,Connect,looktowindward
ClientSocketOpen, openSockets:
192.168.1.87:6000|looktowindward
ClientSocketConnectionDataSent, Data Written: 192.168.1.87:6000|
looktowindward
ClientSocketConnectionDataSent, openSockets:
socketError: 192.168.1.87:6000|looktowindward Error 54 reading socket
socketError - openSockets:
StartOneClient - Connect: 192.168.1.87:6000|looktowindward
ClientSocketOpen, Open Socket: 192.168.1.87:6000|looktowindward
ClientSocketOpen, openSockets:
192.168.1.87:6000|looktowindward
ClientSocketOpen, Write Command: 192.168.1.87:6000|looktowindward
00000027$SYS,Connect,looktowindward
ClientSocketOpen, openSockets:
192.168.1.87:6000|looktowindward
ClientSocketConnectionDataSent, Data Written: 192.168.1.87:6000|
looktowindward
ClientSocketConnectionDataSent, openSockets:
socketClosed: 192.168.1.87:6000|looktowindward ********* AT LAST a
socketClosed message ********
More information about the use-livecode
mailing list