Как работает запуск связи между клиентом и сервером (java) - PullRequest
0 голосов
/ 07 января 2020

Примечание: я знаю, что есть ответы на этот вопрос, но не могли бы вы сделать его простым, потому что мне не нужно разбираться в деталях, мне просто нужно нарисовать картинку в моей голове о том, как работает следующее, и, честно говоря, я не настолько умный, поэтому я заблудился во многих деталях.

Давайте рассмотрим следующий код:

//server
import java.net.*;
import java.io.*;

public class Server {
   Server() throws IOException {
   ServerSocket server = new ServerSocket( 4711 );
   while ( true ) {
   Socket client = server.accept();
   InputStream in = client.getInputStream();
   OutputStream out = client.getOutputStream();
   int multiplikator1 = in.read();
   int multiplikator2 = in.read();
   int resultat = multiplikator1 * multiplikator2;
   out.write(resultat);
   }
 }

//main server

public static void main (String[] args) {
 try {
   Server server = new Server();
 } catch (IOException e) {
   e.printStackTrace();
  }
 } 
}

//client

import java.net.*;
import java.io.*;
public class Client {
 Client() throws IOException {
 Socket server = new Socket ( "localhost", 4711 );
 InputStream in = server.getInputStream();
 OutputStream out = server.getOutputStream();
 out.write( 4 );
 out.write( 9 );
 int result = in.read();
 System.out.println( result );
 server.close();
 }

//client main 

public static void main (String[] args) {
 try {
 Client client = new Client();
 } catch (IOException e) {
 e.printStackTrace();
 }
 } 
}

Итак, что я не понимаю, так это строки Socket client = server.accept(); и Socket server = new Socket ( "localhost", 4711 );

Server 1* <----------------------> 2* Client

note 1* 2* represents socket  

создает ли строка Socket client = server.accept(); сокет на стороне сервера, т.е. Socket (1 *), или наоборот?

и создает ли строка Socket server = new Socket ( "localhost", 4711 ); сокет (2 *) ), который затем отправляет какое-то начальное сообщение в ServerSocket (ServerSocket server = new ServerSocket( 4711 );), а затем после получения того, что начальное сообщение accept method начинает работать и создает сокет (1 *), вот как это работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...