:orphan:
# PetscViewerSocketOpen
Opens a connection to a MATLAB or other socket based server. 
## Synopsis
```
PetscErrorCode PetscViewerSocketOpen(MPI_Comm comm, const char machine[], int port, PetscViewer *lab)
```
Collective


## Input Parameters

- ***comm -*** the MPI communicator
- ***machine -*** the machine the server is running on, use `NULL` for the local machine, use "server" to passively wait for
a connection from elsewhere
- ***port -*** the port to connect to, use `PETSC_DEFAULT` for the default



## Output Parameter

- ***lab -*** a context to use when communicating with the server



## Options Database Keys
For use with  `PETSC_VIEWER_SOCKET_WORLD`, `PETSC_VIEWER_SOCKET_SELF`,
`PETSC_VIEWER_SOCKET_()` or if
`NULL` is passed for machine or PETSC_DEFAULT is passed for port

- ***-viewer_socket_machine <machine> -*** the machine where the socket is available
- ***-viewer_socket_port <port> -*** the socket to conntect to



## Environmental variables

- ***`PETSC_VIEWER_SOCKET_MACHINE` -*** machine name
- ***`PETSC_VIEWER_SOCKET_PORT` -*** portnumber





## Notes
Most users should employ the following commands to access the
MATLAB `PetscViewer`
```none

    PetscViewerSocketOpen(MPI_Comm comm, char *machine,int port,PetscViewer &viewer)
    MatView(Mat matrix,PetscViewer viewer)
```

or
```none
    PetscViewerSocketOpen(MPI_Comm comm,char *machine,int port,PetscViewer &viewer)
    VecView(Vec vector,PetscViewer viewer)
```


Currently the only socket client available is MATLAB, PETSc must be configured with --with-matlab for this client. See
src/dm/tests/ex12.c and ex12.m for an example of usage.

The socket viewer is in some sense a subclass of the binary viewer, to read and write to the socket
use `PetscViewerBinaryRead()`, `PetscViewerBinaryWrite()`, `PetscViewerBinarWriteStringArray()`, `PetscViewerBinaryGetDescriptor()`.

Use this for communicating with an interactive MATLAB session, see `PETSC_VIEWER_MATLAB_()` for writing output to a
.mat file. Use `PetscMatlabEngineCreate()` or `PETSC_MATLAB_ENGINE_()`, `PETSC_MATLAB_ENGINE_SELF`, or `PETSC_MATLAB_ENGINE_WORLD`
for communicating with a MATLAB Engine


## See Also
 [](sec_viewers), `PETSCVIEWERBINARY`, `PETSCVIEWERSOCKET`, `MatView()`, `VecView()`, `PetscViewerDestroy()`, `PetscViewerCreate()`, `PetscViewerSetType()`,
`PetscViewerSocketSetConnection()`, `PETSC_VIEWER_SOCKET_`, `PETSC_VIEWER_SOCKET_WORLD`,
`PETSC_VIEWER_SOCKET_SELF`, `PetscViewerBinaryWrite()`, `PetscViewerBinaryRead()`, `PetscViewerBinaryWriteStringArray()`,
`PetscBinaryViewerGetDescriptor()`, `PetscMatlabEngineCreate()`

## Level
intermediate

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/sys/classes/viewer/impls/socket/send.c.html#PetscViewerSocketOpen">src/sys/classes/viewer/impls/socket/send.c</A>

## Examples
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/vec/vec/tutorials/ex42a.c.html">src/vec/vec/tutorials/ex42a.c</A><BR>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/sys/classes/viewer/impls/socket/send.c)


[Index of all Viewer routines](index.md)  
[Table of Contents for all manual pages](/manualpages/index.md)  
[Index of all manual pages](/manualpages/singleindex.md)  
