Java服务器doen';不要从外部机器获取包装
只有本地客户端才能连接到服务器 客户端代码:Java服务器doen';不要从外部机器获取包装,java,Java,只有本地客户端才能连接到服务器 客户端代码: public InetAddress ipAddress; private DatagramSocket socket; public Client() { try { this.socket = new DatagramSocket(); this.ipAddress = getIpAddress(); } catch (SocketException e) {
public InetAddress ipAddress;
private DatagramSocket socket;
public Client()
{
try
{
this.socket = new DatagramSocket();
this.ipAddress = getIpAddress();
}
catch (SocketException e)
{
e.printStackTrace();
}
}
public void run()
{
while(true)
{
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length, ipAddress, 1331);
try
{
socket.send(packet);
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
private InetAddress getIpAddress()
{
String ipAddress;
try
{
URL url = new URL("http://checkip.amazonaws.com/");
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
ipAddress = br.readLine();
} catch (IOException e)
{
e.printStackTrace();
ipAddress = "null";
}
try
{
return InetAddress.getByName(ipAddress);
}
catch (UnknownHostException e)
{
e.printStackTrace();
return null;
}
}
public static void main(String args[])
{
Client client = new Client();
client.start();
}
private DatagramSocket socket;
public Server()
{
try
{
this.socket = new DatagramSocket(null);
socket.bind(new InetSocketAddress(getIpAddress(), 1331));
System.out.println(socket.getInetAddress());
}
catch (SocketException e)
{
e.printStackTrace();
}
}
public void run()
{
while(true)
{
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);
try
{
socket.receive(packet);
System.out.println("aa");
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
private InetAddress getIpAddress()
{
try
{
return InetAddress.getByName("0.0.0.0");
}
catch (UnknownHostException e)
{
e.printStackTrace();
return null;
}
}
public static void main(String args[])
{
Server server = new Server();
server.start();
}
服务器端代码:
public InetAddress ipAddress;
private DatagramSocket socket;
public Client()
{
try
{
this.socket = new DatagramSocket();
this.ipAddress = getIpAddress();
}
catch (SocketException e)
{
e.printStackTrace();
}
}
public void run()
{
while(true)
{
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length, ipAddress, 1331);
try
{
socket.send(packet);
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
private InetAddress getIpAddress()
{
String ipAddress;
try
{
URL url = new URL("http://checkip.amazonaws.com/");
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
ipAddress = br.readLine();
} catch (IOException e)
{
e.printStackTrace();
ipAddress = "null";
}
try
{
return InetAddress.getByName(ipAddress);
}
catch (UnknownHostException e)
{
e.printStackTrace();
return null;
}
}
public static void main(String args[])
{
Client client = new Client();
client.start();
}
private DatagramSocket socket;
public Server()
{
try
{
this.socket = new DatagramSocket(null);
socket.bind(new InetSocketAddress(getIpAddress(), 1331));
System.out.println(socket.getInetAddress());
}
catch (SocketException e)
{
e.printStackTrace();
}
}
public void run()
{
while(true)
{
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);
try
{
socket.receive(packet);
System.out.println("aa");
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
private InetAddress getIpAddress()
{
try
{
return InetAddress.getByName("0.0.0.0");
}
catch (UnknownHostException e)
{
e.printStackTrace();
return null;
}
}
public static void main(String args[])
{
Server server = new Server();
server.start();
}
我试图关闭防火墙,关闭Windows Defender,将NAT添加到路由器
我还检查了netstat中的端口是否为外部端口
使服务器正常工作的唯一方法是将客户端的ipAddress更改为“localhost”
那么代码就可以正常工作了
有什么方法可以将地址添加到服务器,并且玩家可以仅使用ip地址连接到服务器?要将服务器连接到多台其他计算机,您应该将客户端的ip地址设置为服务器计算机的地址 如何知道服务器计算机的IP地址 在安装服务器的计算机中: Windows:转到CMD,然后键入
ipconfig
您需要IPv4
地址
Mac:转到终端,然后键入
ifconfig
您需要的inet
地址。为了将服务器连接到多台其他计算机,您应该将客户端IP地址设置为服务器计算机的地址
如何知道服务器计算机的IP地址
在安装服务器的计算机中:
Windows:转到CMD,然后键入ipconfig
您需要IPv4
地址
Mac:转到终端,然后键入
ifconfig
您需要的inet
地址。您正在使用自己的IP地址。如果要向服务器发送数据,必须使用服务器的IP地址。主机名checkip.amazonaws.com应该解析为什么?您是否已尝试将服务器直接绑定为ip地址?在您的主机文件中,该主机名是否未链接到localhost?@Nehorai感谢您的帮助:)您正在使用自己的IP地址。如果要向服务器发送数据,必须使用服务器的IP地址。主机名checkip.amazonaws.com应该解析为什么?您是否已尝试将服务器直接绑定为ip地址?在您的主机文件中,该主机名是否未链接到localhost?@Nehorai感谢您的帮助:)