Open Socket Question

Dave dave at looktowindward.com
Wed Feb 27 09:33:33 EST 2008


Hi All,

I just got around the writing the code for this. A couple of questions:

1)  Regarding:

> - when the openSockets contains all the addresses in your original  
> list, you're done

I'm not sure what you mean by "done", all servers will be connected  
to the Client, but is there anything specific I need to do if/when  
this happens. If the In my App if the Client is not connected to a  
Server then nothing special happens, if it is connected then messages  
are sent periodically.

2)  In the socketError and socketTimeout handlers, how can I tell if  
the error presented is because of a Connect to Server problem or a  
general read/write problem? Can I just check in "the openSockets" and  
if it's there assume it's from a read/write problem?

3)  In my App, a Server is only allowed to Accept connections from  
Certain Clients (this is controlled by the IP Address and a Value  
passed to the Server in the Connection Request).  This is my Accept  
code:

function IStartServer theServerPortNumber

   --
   --  Accept Connection(s) from Client(s)
   --
   accept connections on theServerPortNumber with message  
"ISMServerContactedByClient"

   return empty
end IStartServer

on ServerContactedByClient theIPAddress
   local myResult

   --
   --  Check for Error
   --
   put the result into myResult
   if myResult <> empty then exit ServerContactedByClient
   read from socket theIPAddress for kPacketCountSize chars with  
message "ISMServerReceivedPacketSize"

end ServerContactedByClient

Can I just look up "theIPAddress" in "ServerContactedByClient" and if  
it's not in the list of valid Clients, do do an "exit  
ServerContactedByClient" to ignore the request?




Thanks a lot
All the Best
Dave


On 21 Feb 2008, at 21:36, Phil Davis wrote:

> Hi Dave,
>
> I don't have time to write sample code right now, but one approach  
> would be:
>
> - set the socketTimeoutInterval to something reasonable
> - make a 'connectToServerApp' handler that opens one socket, using  
> the params passed to it by 'startClient'
> - let 'StartClient' do this once for each line in your server list:
>      send ("connectToServerApp" && tOneIpAddress) to stack in 0 ticks
> - make a 'socketTimeout' handler than resends the  
> 'connectToServerApp' cmd (with params) to stack in x ticks
> - make a 'socketError' that notifies you of connection failures
> - when the openSockets contains all the addresses in your original  
> list, you're done
>
> Phil Davis
>
>
> Dave wrote:
>> Hi All,
>>
>> I have a number of applications that communicate with each other  
>> using TCP/IP Sockets. For a given application, I want to be able  
>> to connect it to a number of "server" applications, however the  
>> "server" apps make or may not be running, so what I want to be  
>> able to do is to issue an open socket to a "server" application  
>> and if the connection is made add it to a "connected" table and if  
>> not, carry on the to next server, but try to open the socket again  
>> at a later time.
>>
>> I can't seem to be able to get my head around the code needed to  
>> do this!
>>
>> Basically I have a Function that gets called with a list of the IP  
>> Addresses in the for - aa.bb.cc.dd:port and a ConnectionID, I want  
>> to be able to open a socket to each IP/Port with the specified  
>> ConnectionID . The function definition for this is as follows:
>>
>> function StartClient theConnectToServerList,theConnectionID
>>
>> theConnectToServerList is a list of the following
>>
>> 192.168.1.100:6000
>> 192.168.1.100:6002
>> 192.168.1.100:6004
>>
>> etc.
>>
>> Any ideas on how achieve this gracefully would be greatly  
>> appreciated!
>>
>> All the Best
>> Dave
>>




More information about the use-livecode mailing list