0

我有一个简单的服务器...

public static void main(String[] args) throws Exception{
    ServerSocket server = new ServerSocket(2000);
    Socket sock = server.accept();
    InputStream  in = sock.getInputStream();
    OutputStream out = sock.getOutputStream();
    PrintWriter w = new PrintWriter(out);
    Scanner s = new Scanner(in);
    ...

和一个简单的客户......

public static void main(String[] args) throws Exception{
    Socket sock = new Socket("localhost",2000);;
    InputStream in= sock.getInputStream();
    OutputStream out = sock.getOutputStream();
    PrintWriter w  = new PrintWriter(out);
    Scanner s = new Scanner(in);
    ....

-如何将更多客户端连接到此服务器?(我还需要 2 个)-我还想将系统时间从服务器发送到客户端,然后客户端将每次发送 10 次时间加上一些固定延迟(0.5-1 秒),然后服务器必须从所有延迟中找到平均值,然后把它作为新的时间发回给客户......

感谢您的时间...

4

1 回答 1

0

System.currentTimeMillis()提供系统时间

返回的每个 Socketserver.accept()都是一个单独的对象,您的服务器可以通过每个 Socket 对象与每个客户端独立通信。但是,由于您的应用程序对时间敏感,我建议为每个客户端使用单独的线程。

一个简单的服务器将是:

ServerSocket serverSock = new ServerSocket(2000);

while (true)
{
    Socket fpSock = serverSock.accept();
    MyThread t = new MyThread(fpSock, this);
    t.start();
}

您需要的处理将在 MyThread run() 方法中完成。“this”被传递给线程以提供一个引用,每个线程都可以回调主类中的方法。确保做出这样的方法synchronized

您也不一定需要将服务器的时间发送给客户端,只需发送一个预期客户端回显的通用数据包。对所有事务使用服务器的时间戳以避免客户端系统时间的变化。

于 2013-05-10T10:29:02.840 回答