gpt4 book ai didi

java - 为什么我的套接字什么都不做?

转载 作者:行者123 更新时间:2023-11-29 08:36:13 26 4
gpt4 key购买 nike

我正在为我的 friend 创建一个名为 JSocket 的类(因为他不擅长套接字,所以我试图让他更容易上手)。当我调用 connect() 方法时,它很快完成,但在调用 getOutput() 方法后,它失败了。这是我的套接字类:

public class JSocket {

public static String conn, tempLine;
public static int port;
public static boolean isURL = false;
public Socket socket;
BufferedReader in;
PrintWriter out;

public JSocket(String conn, int port) {
this.conn = conn;
this.port = port;
try {
socket = new Socket(conn, port);
} catch (IOException e) {
e.printStackTrace();
}
}

public JSocket connect() {
try {
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));
out.write("GET / HTTP/1.0");
out.flush();
} catch(IOException e) {
e.printStackTrace();
}
return this;
}

public String getOutput() {
String line;
String output = "";
try {
while ((line = in.readLine()) != null) {
output += line;
}
} catch(IOException e) {
e.printStackTrace();
line = "err";
}
return output;
}
}

还有我的主要内容:

public class Main {
public static void main(String[] args) {
JSocket js = new JSocket("google.com", 80);
js.connect();
System.out.println("Connected");
System.out.println("Conn: " + js.getOutput());
return;
}
}

它打印“已连接”,然后稍后打印“Conn:”,没有其他任何内容。我正在尝试获取 google 网页的来源,我不想变得愚蠢,我觉得我做了一些愚蠢的回答。谁能帮忙? (另外,我添加了标签“raw-sockets”,我认为这是一个原始套接字,如果我错了请纠正我)

最佳答案

HTTP GET 行必须以换行符结束,然后你需要一个空行来标记请求头的结尾。在此之前,服务器会一直等待您完成请求。

改变这一行:

out.write("GET / HTTP/1.0");

对此:

out.write("GET / HTTP/1.0\n\n");

关于java - 为什么我的套接字什么都不做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43946344/

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