gpt4 book ai didi

java - 如何接受到 Java WebServer 的远程连接

转载 作者:太空宇宙 更新时间:2023-11-03 17:10:36 26 4
gpt4 key购买 nike

解决方案

我尝试了很多我在网上找到的东西。我尝试通过代码绑定(bind)到 0.0.0.0:

InetAddress addr = InetAddress.getByName("0.0.0.0");
ServerSocket socket = new ServerSocket(5000, 50, addr);

哪个起作用。然后我尝试了以下代码,DID 最终可以正常工作。

InetAddress addr = InetAddress.getByAddress(new byte[] {0x00,0x00,0x00,0x00});
ServerSocket socket = new ServerSocket(5000, 50, addr);

如果有人能解释为什么这行得通,而另一个行不通,我们将不胜感激。

主帖

我目前正在尝试接受来自远程 Amazon Web Services EC2 服务器(Ubuntu 14.04、Java 1.8.0_101)的 ServerSocket 连接。

这是我正在使用的代码

public void CallbackListen() {

new Thread(new Runnable() {
public void run(){

try{

ServerSocket server = new ServerSocket(5000);
Socket conn = server.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));

OutputStream out = conn.getOutputStream();
int count = 0;

while (true)
{
count++;
String line = reader.readLine();
if (line == null)
{
System.out.println("Connection closed");
break;
}
System.out.println("" + count + ": " + line);
if (line.equals(""))
{
System.out.println("Writing response...");

// need to construct response bytes first
byte [] response = "<html><body>Hello World</body></html>".getBytes("ASCII");

String statusLine = "HTTP/1.1 200 OK\r\n";
out.write(statusLine.getBytes("ASCII"));

String contentLength = "Content-Length: " + response.length + "\r\n";
out.write(contentLength.getBytes("ASCII"));

// signal end of headers
out.write( "\r\n".getBytes("ASCII"));

// write actual response and flush
out.write(response);
out.flush();;
}
}
}
catch(Exception e){


}

}
}).start();

目的是将其用作接收带数据的 POST 请求的回调 url。现在,它正在 localhost:5000 上工作,但我无法远程访问它。我的服务器在端口 5000 上接受入站 TCP 请求。当我运行 netstat -l 命令时,本地地址不是 *:5000,而是 [::]:5000,而不是具有 *:* 的外部地址,它是 [::]:*。

如何更改我的代码以接受外国请求?

谢谢,

-贾斯汀

最佳答案

我尝试了很多我在网上找到的东西。我尝试通过代码绑定(bind)到 0.0.0.0:

InetAddress addr = InetAddress.getByName("0.0.0.0");
ServerSocket socket = new ServerSocket(5000, 50, addr);

哪个起作用。然后我尝试了以下代码,DID 最终可以正常工作。

InetAddress addr = InetAddress.getByAddress(new byte[] {0x00,0x00,0x00,0x00});
ServerSocket socket = new ServerSocket(5000, 50, addr);

关于java - 如何接受到 Java WebServer 的远程连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38773735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com