[Gmsh] feature request: gmsh reads input from TCP port

Al Danial al.danial at gmail.com
Sun Mar 12 03:43:54 CET 2006


hi Christophe,

I played with the TCP connection code for a couple of hours
and have found running the code on a single Linux machine to
work well--very cool.

Running with two machines was more difficult.  Here's my setup:
 - Linux machine at 198.168.1.101 on which I built v1.64.0 from source
 - Windows XP machine at 198.168.1.103 using the binary of v1.64.0 from
   your web site.  Also has CygWin installed.

First I made sure the Windows firewalling was disabled and did some
tests with netcat going from Linux to Windows:

  CygWin>  nc -l -p 44122
  Linux >  cat cone.geo | nc 192.168.1.103 44122

The cone.geo file was transferred from the Linux box to the Windows
box just fine; the CygWin terminal window STDOUT showed the contents
of the cone.geo file.  I then killed netcat on both machines by
sending ctrl-c from Linux.

Next on the Windows box I started gmsh with Options/Solver
socket name = 192.168.1.103:44122 and checked "Always listen..."

On the Linux side once again I did "cat cone.geo | nc 192.168.1.103 44122"
and this caused gmsh on Windows to crash.  I figured I'd better go
back to the canned demo so I modified interactive.cpp like so
    sprintf(socket, "192.168.1.103:44122");
then ran the interactive method but it wasn't able to connect:
    Unable to connect to Gmsh.
I modified the code to print out the reason it failed to connect:
    printf("Unable to connect to Gmsh: %d\n", _client.Connect(socket));
and got back the value -2
    Unable to connect to Gmsh: -2

I then tried the "cat cone.geo | nc ..." again but this time gmsh just
ignored it.  The gmsh message window said
    Warning : Failed to receive body on socket: aborting
    Info    : Client disconnected: starting new connection

For some reason I was initially able to send something between Linux
and gmsh on Windows but it isn't repeatable; all subsequent attempts
failed.   Next I will try going from Windows to Linux, will post my
findings.   -- Al



On 3/10/06, Christophe Geuzaine <cag32 at case.edu> wrote:
> Al Danial wrote:
> > The examples in utils/solvers/* show how one might tie an external
> > solver to gmsh.  From what I can tell, this scheme means gmsh and
> > the external solver need to run on the same machine for the socket
> > communication to work.
> >
> > What would be really nice is the capability to run gmsh on another
> > computer on a network then send it commands over TCP.  You'd start
> > gmsh on Machine_A with something like
> >
> >    gmsh -p 19000
> >
> > which says "wait for commands on port 19000", then from another
> > computer, Machine_B, you'd connect to Machine_A's port 19000 and
> > send it strings like
> >
> >   "lc = 0.009;"
> >   "Point(1) = {0, 0, 0, 9.e-1 * lc};"
> >   "Point(2) = {.1, 0,  0, lc} ;"
> >   "Point(3) = {.1, .3, 0, lc} ;"
> >   "Point(4) = {0,  .3, 0, lc} ;"
> >   "Line(1) = {1,2} ;"
> >   "Line(2) = {3,2} ;"
> >   "Line(3) = {3,4} ;"
> >   "Line(4) = {4,1} ;"
> >
> > (lines from t1.geo for example).  In other words, rather than reading
> > input from a .geo file, in server mode gmsh would read input from a
> > port.  The two machines merely need to be on the same network; don't
> > need to share a file system (or operating system for that matter).
> >
> > The primary benefit is that you could run gmsh on a computer that has
> > optimal graphics hardware--and tied to a massive screen in a conference
> > room perhaps--while running the solver on a cluster or some other
> > computer with beefy CPU's but little in the way of graphics.
> >
>
> Al - If you're still interested in this stuff, give version 1.64 a try:
>
> - select "Always listen to incoming connections" in Options->Solver
>
> - compile utils/solver/c++/interactive.cpp (it's a small test program
> that shows off some of the new features of the solver interface in the
> form of a command-line "Gmsh remote-control")
>
> (You can use a TCP/IP socket instead of a Unix socket by replacing
> ".gmshsock" with e.g. "127.0.0.1:44122" in Solver->Options and in
> interactive.cpp.)
>
> Take care,
>
> Christophe
>
>
>
> > I can provide demo client/server TCP code if there's a possibility
> > that this request might be implemented.        -- Al
> >
> > _______________________________________________
> > gmsh mailing list
> > gmsh at geuz.org
> > http://www.geuz.org/mailman/listinfo/gmsh
> >
> >
>
>
> --
> Christophe Geuzaine
> Assistant Professor, Case Western Reserve University, Mathematics
> http://www.case.edu/artsci/math/geuzaine
>