java一直运行应用程序并在连接时向客户端发送数据?

我正在尝试执行以下操作:


一直计算我的设备的运行时间,并且每当客户端连接时,他都会将其显示给他,直到他断开连接。


怎么办?


import java.io.*;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.Scanner;


import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.concurrent.TimeUnit;


public class MyServer {

    public static void main(String[] args) {

        connectToServer();

    }


    static Calendar startTime = Calendar.getInstance();

    static long StartTime = System.currentTimeMillis();


    public static void connectToServer() {

        try(ServerSocket serverSocket = new ServerSocket(9991)) {

            Socket connectionSocket = serverSocket.accept();

            InputStream inputToServer = connectionSocket.getInputStream();

            OutputStream outputFromServer = connectionSocket.getOutputStream();

            Scanner scanner = new Scanner( inputToServer, "UTF-8" );

            PrintWriter serverPrintOut = new PrintWriter(

               new OutputStreamWriter( outputFromServer, "UTF-8" ), true );

            serverPrintOut.println("Welcome to time server ");

            while(true) {

                long  EndTime = System.currentTimeMillis();

                long Total =  EndTime -  StartTime;

                serverPrintOut.println(Total);

                System.out.println(Total);

                try {

                    Thread.sleep(1000);

                }

                catch(InterruptedException ex) {

                    Thread.currentThread().interrupt();

                }

            }

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}

但他只开始向我展示用户连接的时间


为什么?


慕容森
浏览 214回答 1
1回答

绝地无双

服务器代码:import java.io.IOException;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.Calendar;class ClientThread extends Thread {&nbsp; &nbsp;private final Socket _socket;&nbsp; &nbsp;public ClientThread( Socket socket ) {&nbsp; &nbsp; &nbsp; System.out.println( "New client" );&nbsp; &nbsp; &nbsp; _socket = socket;&nbsp; &nbsp; &nbsp; setDaemon( true );&nbsp; &nbsp; &nbsp; start();&nbsp; &nbsp;}&nbsp; &nbsp;@Override&nbsp; &nbsp;public void run() {&nbsp; &nbsp; &nbsp; try(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;final OutputStream outputFromServer = _socket.getOutputStream();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;final PrintWriter serverPrintOut = new PrintWriter(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new OutputStreamWriter( outputFromServer, "utf-8" ), true ))&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;serverPrintOut.println( "Welcome to time server" );&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(;;) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; final long elapsed = System.currentTimeMillis() - MyServer.StartTime;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; serverPrintOut.println( elapsed );&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Thread.sleep( 1000L );&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; catch( final InterruptedException ex) {/**/}&nbsp; &nbsp; &nbsp; catch( final IOException e ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;e.printStackTrace();&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp;}}public class MyServer {&nbsp; &nbsp;static Calendar startTime = Calendar.getInstance();&nbsp; &nbsp;static long StartTime = System.currentTimeMillis();&nbsp; &nbsp;public static void main( String[] args ) throws IOException {&nbsp; &nbsp; &nbsp; try( ServerSocket serverSocket = new ServerSocket( 9991 )) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(;;) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new ClientThread( serverSocket.accept());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp;}}客户端代码:import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.Socket;public class MyClient {&nbsp; &nbsp;public static void main( String[] args ) throws IOException {&nbsp; &nbsp; &nbsp; try(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Socket socket = new Socket( args[0], 9991 );&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BufferedReader br = new BufferedReader(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; new InputStreamReader( socket.getInputStream(), "utf-8" )))&nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String line;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while(( line = br.readLine()) != null ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println( line );&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp;}}输出,服务器端:$ java -cp bin so.MyServer&nbsp;New clientNew client输出,客户端:$ java -cp bin so.MyClient localhostWelcome to time server32744274527562757275827692761027611276^C&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <---- End of first client$ java -cp bin so.MyClient localhostWelcome to time server198382083821838^C&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <---- End of second client
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java