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

时间:2013-11-09 10:26:27

标签: 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();
        }

    }
}

1 个答案:

答案 0 :(得分:1)

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

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

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

ServerSocket s = new ServerSocket(5217);

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

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

因此,如果您希望客户端连接到另一台计算机上的服务器,则InetAddress.getLocalHost()必须更改为服务器的地址。