我从这个网站尝试了这段代码 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/