What is the need for a socket if both server and client processes are on the same computer?

I am relatively new to programming and trying to learn socket programming myself. In my opinion, a socket is needed at both endpoints if a process (for example, a server process) should interact with another process (for example, a client process) over the network.

If my server and client processes are on the same computer, then why do I need sockets because streams or datagrams do not cross the network? It is inside the same machine. Can anyone clarify the reason for this?

+4
source share
5 answers

Then how do two processes communicate on the same computer without using sockets?

...

That's right, sockets are a way for two processes to communicate regardless of whether it is on a network or inside a single machine. You could invent other mechanisms for communication within the same machine (and there are many), but why if the sockets already serve this purpose well?

+6
source

If you are sure that they will always be on the same machine, then there is no need for sockets.

There are other mechanisms for exchanging data between processes on the same computer, such as file sharing. But sockets make it transparent to the user, regardless of whether they are on the same computer or on another computer, providing an abstraction, so if you can require it on different machines, a socket is a good way.

+3
source

Sockets provide a mechanism for communication between two computers using TCP. The client program creates a socket on its end of communication and tries to connect this socket to the server.

When the connection is complete, the server creates a socket object at the end of the message. The client and server can now communicate by writing to and reading from the socket.

The java.net.Socket class represents a socket, and the java.net.ServerSocket class provides a mechanism for a server program to listen on clients and establish connections with them.

When establishing a TCP connection between two computers using sockets, the following steps are taken:

The server instantiates a ServerSocket object, denoting which port number communication is to occur on. The server invokes the accept() method of the ServerSocket class. This method waits until a client connects to the server on the given port. After the server is waiting, a client instantiates a Socket object, specifying the server name and port number to connect to. The constructor of the Socket class attempts to connect the client to the specified server and port number. If communication is established, the client now has a Socket object capable of communicating with the server. On the server side, the accept() method returns a reference to a new socket on the server that is connected to the client socket. 

Once connections are established, communication can occur using I / O streams. Each socket has both an OutputStream and an InputStream. The OutputStream client connects to the InputStream server, and the InputStream client connects to the OutputStream server.

TCP is a twoway communication protocol, so data can be sent simultaneously through both streams. The following useful classes provide a complete set of methods for implementing sockets.

0
source

There are several ways to interact between different processes, one of them is sockets.

As always, there are trade-offs.

There are faster and less expensive IPC methods. Some of them add extra code complexity and, if not used correctly, can add possible errors to your computer.

The main advantage of sockets is transparency. If you later decide that you want to run one or more processes on another computer, you do not need to change the code.

0
source

What OS are you using? If it is Windows, then you have it all to make IPC

The following inter-process communication (IPC) mechanisms are supported by Windows:

  • Clipboard
  • COM
  • Copy data
  • DDE
  • File mapping
  • mail slots
  • Pipes
  • Rpc
  • Windows sockets

Before continuing, let us know your operating system and we will be able to give you some tips on exchanging between processes.

0
source

Source: https://habr.com/ru/post/1479900/


All Articles