java - 查找 Java 服务器时间和客户端时间

标签 java datetime client-server client serversocket

我从这个网站尝试了这段代码 server client code

它在我的机器上运行得很好,我首先运行服务器代码,然后运行客户端代码。 我有时间了。 我尝试将服务器端代码放在另一台 PC 上并在 Eclipse 上运行它,类似地,我尝试从我这边的 Eclipse 运行客户端代码但没有成功。 它给了我以下错误:

Exception in thread "main" java.net.BindException: Cannot assign requested address: JVM_Bind
    at java.net.DualStackPlainSocketImpl.bind0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketBind(Unknown Source)
    at java.net.AbstractPlainSocketImpl.bind(Unknown Source)
    at java.net.PlainSocketImpl.bind(Unknown Source)
    at java.net.ServerSocket.bind(Unknown Source)
    at java.net.ServerSocket.<init>(Unknown Source)
    at sample.servertime.main(servertime.java:13)

我正在做的事情是正确的还是错误的。需要帮助。 这是 2 个代码。

// Date Client   

import java.io.*;
import java.net.*;

class DateClient
{
    publicstaticvoid main(String args[]) throws Exception
    {
        Socket soc=new Socket(InetAddress.getLocalHost(),5217);        
        BufferedReader in=new BufferedReader(
                new InputStreamReader(
                        soc.getInputStream()
                        )
                    );

        System.out.println(in.readLine());
    }    
}



// Date Server

import java.net.*;
import java.io.*;
import java.util.*;

class DateServer
{
    publicstaticvoid main(String args[]) throws Exception
    {
        InetAddress locIP = InetAddress.getByName("192.168.1.21");
        ServerSocket s= new ServerSocket(5217, 0, locIP);

        while(true)
        {
            System.out.println("Waiting For Connection ...");
            Socket soc=s.accept();
            DataOutputStream out=new DataOutputStream(soc.getOutputStream());
            out.writeBytes("Server Date" + (new Date()).toString() + "\n");
            out.close();
            soc.close();
        }

    }
}

最佳答案

在服务器部分,您已经硬编码了服务器的 IP 地址:

InetAddress locIP = InetAddress.getByName("192.168.1.21");
ServerSocket s= new ServerSocket(5217, 0, locIP);

当您在另一台机器上运行它时,地址将会不同,因此除非您更改它,否则无法绑定(bind)它。
您可以将其更改为绑定(bind)到所有地址,例如:

ServerSocket s = new ServerSocket(5217);

此外,客户端将始终尝试连接到本地计算机:

Socket soc=new Socket(InetAddress.getLocalHost(),5217);

所以如果你想让客户端连接到另一台机器上的服务器,InetAddress.getLocalHost()必须更改为服务器的地址。

关于java - 查找 Java 服务器时间和客户端时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19874888/

相关文章:

java - 如何将节点从 xml 文档附加到现有的 xml 文档

c# - Web API 无法反序列化 Javascript Date.toISOString()?

java - 使用java套接字从客户端向服务器发送文本文件

c# - C# 中的 select() 函数

java - 在 JPA @OneToMany 关系中更新 Set 元素的正确方法?

java - 使用Java更改Excel日期数据保存到数据库时的日期格式

java - 将一些小时/分钟添加到当前日期时间并获取 future 的日期时间

java - 确定用于 Java RMI 调用的远程客户端 IP 地址

java - 在java中将String变量设置为Date对象

mysql - 删除日期时间字段中的毫秒数