我在此网站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();
}
}
}
答案 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()
必须更改为服务器的地址。