Socket是传输层的技术,包含了UDP和TCP两种传输方式。
HTTP协议是应用层的协议,应用层协议还有FTP文件传输协议。
Java中,应用层使用URL和URLConnection完成HTTP协议和Socket流的封装。
package com.gc.socket;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
public class HttpDemo {
public static void main(String[] args) throws IOException {
/**
* URLConnection对象将HTTP协议头的解析、Socket传输进行了封装
* 对外提供方法封装好的方法
* 开发者不用面对Socket编程处理与服务端的连接
* 直接通过该对象就能完成基于HTTP协议的编程
*/
URL url = new URL("http://www.baidu.com?name=zs");
//port=-1,服务端会自动转为80端口
System.out.println(url.getProtocol()+","+url.getHost()+","+url.getPort()+","+url.getQuery());
/**对http头信息进行了内部处理,并完成了与服务器之间的socket连接*/
URLConnection conn = url.openConnection();
System.out.println(conn.getContentType());
System.out.println(conn.getContentLength());
InputStream in = conn.getInputStream();
byte[] buf = new byte[1024];
int len = 0;
while((len=in.read(buf))!=-1)
System.out.println(new String(buf,0,len));
in.close();
}
}