参考资料来源:百度贴吧
你好。访问Web服务器(例:www.baidu.com),需要根据Http协议发送相关请求头,否则Web服务器不会处理。这种处理就类似于你的代码:(line = read.readLine()) != null。当然Web服务器验证的不是这个。
HTTP协议这里不会详解,有需要可以查询相关资料。
在你的代码中加入:
long start = System.currentTimeMillis()SocketAddress address = new InetSocketAddress(InetAddress.getByName("www.javathinker.org").getHostAddress(), 80)
Socket socket = new Socket()
socket.connect(address)
System.out.println("连接成功-" + socket.getInetAddress() + " : "
+ (System.currentTimeMillis() - start) + "ms")
/**编写简单HTTP请求头*/
StringBuilder sb = new StringBuilder()
sb.append("GET / HTTP/1.1\r\n")
.append("Host: www.javathinker.org\r\n")
.append("Connection: Close\r\n\r\n")
OutputStream out = socket.getOutputStream()
out.write(sb.toString().getBytes())
out.flush()
/**发送完成后flush*/
BufferedReader read = new BufferedReader(new InputStreamReader(
socket.getInputStream()))
/**循环等待read接收*/
boolean b = true
while (b) {
if (read.ready()) {
String line = null
while ((line = read.readLine()) != null) {
System.out.println(line)
}
b = false
}
}