gpt4 book ai didi

java - 在Java中,套接字请求网页总是超时

转载 作者:行者123 更新时间:2023-11-30 05:11:14 25 4
gpt4 key购买 nike

我正在请求一个带有这样的套接字的网页:

Socket sock = null;
PrintWriter out = null;
BufferedReader in = null;

try {
sock = new Socket( "www.overvprojects.nl", 80 );
out = new PrintWriter( sock.getOutputStream(), true );
in = new BufferedReader( new InputStreamReader( sock.getInputStream() ) );
} catch ( UnknownHostException e ) {
e.printStackTrace();
} catch ( IOException e ) {
e.printStackTrace();
}

out.println( "GET /ip.php HTTP/1.1" );
out.println( "Host: www.overvprojects.nl" );
out.println( "" );
out.flush();

String buf = "";

while ( buf != null )
{
try {
buf = in.readLine();
} catch ( IOException e ) {
e.printStackTrace();
}

if ( buf != null && Pattern.matches( "^(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}$", buf ) ) {
ipText.setText( buf );

break;
}
}

try {
in.close();
out.close();
sock.close();
} catch ( IOException e ) {
e.printStackTrace();
}

但是,程序似乎要等到连接超时。我已经调试了循环,并且绝对确定调用了break,但在连接终止之前,UI 不会更新。 (这需要 10 多秒。)之后 IP 可见,因此我确信在某个时刻已调用了中断。我还尝试使用网站 www.whatismyip.org 代替,并且确实在两秒钟内完成。

最佳答案

您需要检查服务器返回的内容长度 header 。只读取那么多字节,然后关闭连接。

您正在等待服务器关闭连接,这就是为什么需要 20 秒的时间。

关于java - 在Java中,套接字请求网页总是超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3304476/

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