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
Java 服务器端程序连接详细信息_Java_Sockets_Socketserver - Fatal编程技术网

Java 服务器端程序连接详细信息

Java 服务器端程序连接详细信息,java,sockets,socketserver,Java,Sockets,Socketserver,我已经完成了这个程序,我在一本Java书籍中找到了这个程序。但我有一个非常基本的问题,我在互联网上找不到任何具体的答案 我的代码: 我已将代码缩减到与我的问题相关的所有内容 import java.io.*; import java.net.*; public class DailyS { String s="someString"; public void go{ try{ ServerSocket S=new ServerSocket(42

我已经完成了这个程序,我在一本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
将接收一个客户机并为其分配其他一些随机端口

我的疑问是:

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

此连接请求是否会在DS中运行
main()
方法

客户端程序:

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方法开始运行,创建一个对象
server
,并调用
go()
go()
具有请求连接的代码。但无论如何,它都不会创建服务器端类对象。它既不调用服务器端类中的
go()
。那么连接将如何完成

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

网络101

服务器有一个通过ServerSocket“侦听”的开放端口。这将侦听传入的连接

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

此服务器程序与客户端完全分离。除非通过套接字连接显式传递,否则它们不共享任何变量。仅仅因为有相似的命名方法和类,并不意味着它们是相同的

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

网络101

服务器有一个通过ServerSocket“侦听”的开放端口。这将侦听传入的连接

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

此服务器程序与客户端完全分离。除非通过套接字连接显式传递,否则它们不共享任何变量。仅仅因为有相似的命名方法和类,并不意味着它们是相同的



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

客户端从未连接到服务器。。。它只是生成一个套接字对象。主要方法的要点是运行程序。这很简单,你必须同时运行这两个程序。在服务器端,程序将侦听指定端口上的连接,在客户端,程序将创建与服务器上端口的连接。一旦建立了连接,客户端和服务器就可以互相发送数据。客户端和服务器端程序不会调用彼此的方法directly@Jitin这意味着服务器端程序应该全天候运行。是吗?@MathewsMathai-yup。服务器必须24小时运行/7@cricket_007客户端重新连接,通过询问servet端中的
main()
是什么,我的意思是我永远不会单独执行服务器端。客户端永远不会连接到服务器。。。它只是生成一个套接字对象。主要方法的要点是运行程序。这很简单,你必须同时运行这两个程序。在服务器端,程序将侦听指定端口上的连接,在客户端,程序将创建与服务器上端口的连接。一旦建立了连接,客户端和服务器就可以互相发送数据。客户端和服务器端程序不会调用彼此的方法directly@Jitin这意味着服务器端程序应该全天候运行。是吗?@MathewsMathai-yup。服务器必须24小时运行/7@cricket_007客户端重新连接,通过询问servet端中的
main()
是什么,我的意思是我从未单独执行服务器端。我还有一个疑问。服务器中的程序是如何运行的?它将如何在不停止的情况下保持运行?方法
ServerSocket.accept
停止程序的执行并等待连接。这应该在它自己的线程上完成,以免阻止其他代码运行。建立连接后,通常会添加一个while循环,以不断侦听来自客户端的传入消息。好的。非常感谢您的时间。服务器通过
ServerSocket
侦听,而不是
Socket
[为您解决了这个问题]。客户端在此代码中创建了一个连接的套接字。我还有一个疑问。服务器中的程序是如何运行的?它将如何在不停止的情况下保持运行?方法
ServerSocket.accept
停止程序的执行并等待连接。这应该在它自己的线程上完成,以免阻止其他代码运行。建立连接后,通常会添加一个while循环,以不断侦听来自客户端的传入消息。好的。非常感谢您的时间。服务器通过
ServerSocket
进行侦听,而不是通过<