服务器端程序连接细节

Server Side program connection details

我已经完成了我在 Java 一本书中找到的这个程序。但是我有一个非常基本的问题,我无法在互联网上找到任何具体答案。

我的代码:

我已将代码缩减为与我的问题相关的所有内容。

import java.io.*;    
import java.net.*;    
public class DailyS    {    
String s="someString";  
public void go{     
try{    
ServerSocket S=new ServerSocket(4242);      while(true) 
   {        
Socket sock=S.accept();        
 //other codes, irrelevant here  
  }   
 }    
catch(IOException ex) {    
ex.printStackTrace();
}    
} public static void main(String[] arg){
DailyS server = new DailyS();

server.go() ;
}  
  }

我知道 ServerSocket 将接收一个客户端并为其分配其他随机端口。

我的疑惑:

这个程序什么时候开始 运行ning 以及它会在什么代码点开始 运行ning? 我知道 java 程序从 运行ning 从 main() 方法开始。但问题是客户端程序没有创建 DailS 对象的代码。它只是连接到 Server。客户端程序未在服务器端程序中调用 go()。那么如果go()没有运行,如何连接完成呢?这是由 java 内部管理的吗?

Will this request for connection run the main() method in DS?

客户端程序:

import java.io.*;
    import java.net.*;
    public class DailyCS
    {
    public void go{
     try{
    Socket s=new Socket("ip","port");
}
catch(IOException ex) {
    ex.printStackTrace();
    }
    }
    public static void main(String[] args) {
    DailyCS server = new DailyCS();
    server.go() ;
    }
    }

客户端程序从 main 方法开始 运行ning,创建一个对象 server 并调用 go()go() 有请求连接的代码。但在任何时候,它都会创建一个服务器端 class 对象。它既不调用服务器端class中的go()。那么如何完成连接呢?

服务器端程序中main()有什么用?

网络 101。

服务器通过 ServerSocket 有一个开放端口 "listening"。这会侦听传入连接。

客户端也有一个套接字,但它是到服务器套接字的传出连接。服务器 必须 运行 连接并侦听 连接,以便客户端进行通信。

此服务器程序与客户端完全分开。它们不共享变量,除非显式地通过套接字连接传递。仅仅因为有相似的命名方法和 类,并不能使它们相同。

两个程序都需要 main 方法来实际 运行 因为这是 Java。两种 go 方法在各自的 类 中都是 运行,但实际上只有服务器套接字在接受连接。客户端代码创建一个套接字对象并连接到服务器(假设服务器代码在客户端代码之前是运行)。