客户端到服务器通信的开始是如何工作的(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