Re: Re: Reading/Writing files across networks
- To: mathgroup at smc.vnet.net
- Subject: [mg36042] Re: [mg36024] Re: Reading/Writing files across networks
- From: "Hermann Schmitt" <schmitther at netcologne.de>
- Date: Wed, 14 Aug 2002 05:35:10 -0400 (EDT)
- References: <200208130922.FAA10054@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hello, The following is possible: Assume Mathematica runs on machine A, then you can install Java (see JLink User Guide p.20) on machine B. In this way you can execute Java programs on machine B from machine A. Those programs may read data on machine B and transfer the data to machine A, automatically. Hermann Schmitt ----- Original Message ----- From: "Rolf Mertig" <rolf at mertig.com> To: mathgroup at smc.vnet.net Subject: [mg36042] [mg36024] Re: Reading/Writing files across networks > >Hello, > > we're running Mathematica 4.2 under Linux. > >Since we're working alot across networks we wonder if it is possible > >with Mathematica to read and write files directly between the Linux > > cluster where we've Mathematica installed and another Unix machine at > > another domain (provided the permissions are set). I.e., is it > > possible by calling OpenRead[...] with the appropriate options to open > >a file on another domain machine for reading ? Perhaps by using pipes > >?! The same applies to OpenWrite, Import, Export... > >Many thanks, regards > >Justus > > Hi, > no, Mathematica is (unfortunately) still not integrated enough with Java. > However, you can use a modified GetURL (originally from the JLink manual) and > write wrapper funcionts (like the NetIfiy below) around it. > I.e., you would have to put give users on your cluster > (local, and even proxied) access to an Apache server with the > filesystem where the Mathematica (or other files) live visible. > > E.g.: > > Netify[func_, url_String/;StringMatchQ[url,"http:*"], args___]:= > Block[{imp,tmp},tmp = GetURL[url]; imp=func[tmp,args];DeleteFile[tmp];imp ]; > > Netify[Get, "http://www.mertig.com/mathdepot/misc/Isolate.m"] > (* this is the same as calling Get["Isolate.m"] if Isolate.m would be > lokal*) > > > Netify[Import,"http://www.linux.de/pics/Linux.de-logo.gif","GIF"]//Show > (* this just displays a gif *) > > > (*Here the GetURL funcion: *) > > Needs["JLink`"] > $ProxyHost=None; > $ProxyPort=8080; > > Options[GetURL]={ProxyHost :> $ProxyHost, > ProxyPort :> $ProxyPort}; > GetURL[url_String, opts___?OptionQ] := > JavaBlock[ > Module[{u, stream, numRead, outFile, buf, prxyHost, prxyPort}, > {prxyHost, prxyPort} = {ProxyHost, ProxyPort} /. > Flatten[{opts}] /. Options[GetURL]; > StartJava[]; > If[StringQ[prxyHost], > (* Set properties to force use of proxy. *) > SetInternetProxy[prxyHost, prxyPort] > ]; > u = JavaNew["java.net.URL", url]; > (* This is where the error will show up if the URL is not valid. > A Java exception will be thrown during openStream, which > causes the method to return $Failed. > *) > stream = u@openStream[]; > If[stream === $Failed, Return[$Failed]]; > buf = JavaNew["[B", 5000]; (* 5000 is an arbitrary buffer size *) > outFile = OpenTemporary[DOSTextFormat->False]; > While[(numRead = stream@read[buf]) > 0, > WriteString[outFile, FromCharacterCode[If[# < 0, # + 256, #]& > /@ Take[Val[buf], numRead]]] > ]; > stream@close[]; > Close[outFile] (* Close returns the filename *) > ] > ] > > You can find other useful applications of GetURL at > http://www.mertig.com/neu/HTMLLinks/index_5.html > > One could even think of "Netifying" complete complex Mathematica packages and > applications. > Kind of "ASP" (application service provider). > Now, if someone pays me I'll set such a system up for them ... (of course > paying attention to license issues etc.; maybe the normal Mathematica license > should just fade out and in the near ".Net-like webservice futer" > there should be only webMathematica licenses anymore). > > Regards from Berlin-Mitte, > > Rolf Mertig > > Mertig Consulting > http://www.mertig.com >
- References:
- Re: Reading/Writing files across networks
- From: Rolf Mertig <rolf@mertig.com>
- Re: Reading/Writing files across networks