服务器端程序连接细节
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 方法在各自的 类 中都是 运行,但实际上只有服务器套接字在接受连接。客户端代码创建一个套接字对象并连接到服务器(假设服务器代码在客户端代码之前是运行)。
我已经完成了我在 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 方法在各自的 类 中都是 运行,但实际上只有服务器套接字在接受连接。客户端代码创建一个套接字对象并连接到服务器(假设服务器代码在客户端代码之前是运行)。