Socket Accept/Connection Question/Problem
Eric Chatonet
eric.chatonet at sosmartsoftware.com
Thu Feb 28 08:22:23 EST 2008
Hi Dave,
We use TCP to communicate between a GUI and a process that manages
internet captures and a SQL db.
Both apps act as a client AND a server.
Initialization sequence is:
1. The main app opens a socket as a client then opens the other app
as a process.
2. When the process opens it opens another socket as a client and the
same than the main app as a server.
3. The process sends a message to the main app to ask it to open the
corresponding socket to act as a server.
If the main app does not receive the message it expects (with a
timeout we fix) it means that something wrong happened.
Otherwise it sends a 'Done' message to the process.
4. The main app sends a 'ping' message to verify that double client/
server connection has been correctly established in both directions.
When all this has been done, you know that communication is OK :-)
Best regards from Paris,
Eric Chatonet.
Le 28 févr. 08 à 14:04, Dave a écrit :
> Hi All,
>
> I am using Sockets to communicate between Applications. In this
> example, one Application is a "Server" and the other is a "Client".
> The Server issues a connected command and specifies a Callback
> handler as so:
>
> accept connections on theServerPortNumber with message
> "ServerContactedByClient"
>
> on ServerContactedByClient theIPAddress
> local myClientIPAddress
> local myResult
>
> put the result into myResult
>
> if myResult <> empty then
> breakpoint
> exit ServerContactedByClient
> end if
>
> set the itemDelimiter to ":"
> put item 1 of theIPAddress into myClientIPAddress
>
> if myClientIPAddress is not among the lines of
> sgServerClientAllowList then
> close socket theIPAddress
> end if
>
> read from socket theIPAddress for 8 chars with message
> "ServerReceivedPacketSize"
>
> end ServerContactedByClient
>
> I am testing the error handling when a Client tries to connect but
> that server doesn't allow it to connect. The
> "ServerContactedByClient" gets called and the IP address is NOT is
> present in the "sgServerClientAllowList" (a Script Global), so the
> close socket is executed. However on the Client I have the
> following code:
>
> open socket mySocketAddress with message "ClientSocketOpen"
>
>
> on ClientSocketOpen theIPAddress
> local myConnectString
> local myConnectionID
> local myResult
>
>
> put the result into myResult
> if myResult <> empty then
> breakpoint
> exit ClientSocketOpen
> end if
>
> --
> -- Send the Connect Message, Start with the Count
> --
> put "Connect," & myConnectionID into myConnectString
> write myConnectString to socket theIPAddress with message
> "ClientSocketConnectionDataSent"
> end ClientSocketOpen
>
> The "ClientSocketOpen" handler is called but the
> "ClientSocketConnectionDataSent" handler is never called, as I
> would expect, since the Server closed the Socket, however, the
> socketError or sockTimeout handler are not called either?
>
> My question is, how can the Client tell if the connection has been
> successful or not?
----------------------------------------------------------------
Plugins and tutorials for Revolution: http://www.sosmartsoftware.com/
Email: eric.chatonet at sosmartsoftware.com/
----------------------------------------------------------------
More information about the use-livecode
mailing list