Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
客户端到服务器通信的开始是如何工作的(java)_Java_Sockets - Fatal编程技术网

客户端到服务器通信的开始是如何工作的(java)

客户端到服务器通信的开始是如何工作的(java),java,sockets,Java,Sockets,注:我知道这个问题有答案,但请你保持简单,因为我不需要了解细节,我只需要在脑海中描绘出下面的工作原理,老实说,我不是那么聪明,所以我会沉迷于很多细节 让我们考虑下面的代码: //server import java.net.*; import java.io.*; public class Server { Server() throws IOException { ServerSocket server = new ServerSocket( 4711 ); while (

注:我知道这个问题有答案,但请你保持简单,因为我不需要了解细节,我只需要在脑海中描绘出下面的工作原理,老实说,我不是那么聪明,所以我会沉迷于很多细节

让我们考虑下面的代码:

//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();
 }
 } 
}
所以我不理解的是以下行
socketclient=server.accept()
套接字服务器=新套接字(“localhost”,4711)

服务器1*2*客户端
注1*2*表示插座
socketclient=server.accept()在服务器端创建一个套接字,即套接字(1*),还是相反


socketserver=newsocket(“localhost”,4711)创建套接字(2*),然后将某种初始消息发送到ServerSocket(
ServerSocket server=newserversocket(4711);
),然后在收到该初始消息后,接受方法开始工作并创建套接字(1*)这就是它的工作原理吗?

阅读-创建一个新的套接字,这是第一个要查看的地方。
server.accept()
返回的
Socket
是来自服务器上客户端的连接<代码>服务器套接字服务器=新服务器套接字(4711)侦听端口4711上的传入客户端连接。它只是监听,一旦一个客户端连接到另一个
套接字
,通信就会通过另一个
套接字进行。我这样做了,我认为这是我描述的方式,但我从视频讲座中了解到的是另一种方式around@user12394078什么视频讲座?如果你在上课,请询问你的老师。a和B试图互相交谈,他们中至少有一人必须在听新的连接,这就是
accept()
所做的。如果A和B都不在听,他们将永远无法连接。假设A在听而B不在听——这意味着A不能直接和B说话,因为B不在听。A只能坐在那里,无限期地等待。如果/当B尝试与A连接时,即发生连接。通常我们会说“A”是服务器,“B”是客户端。
Server 1* <----------------------> 2* Client

note 1* 2* represents socket