Socket
Socket是底层实现,协议你要自己去写,不局限于http,可以是任何协议。
Socket 的连接是有状态的,一旦两边连接上了,将一直保持连接,除非人为断开。一般用于游戏,需要持续的网络畅通。
URLConnection
URLConnection和HttpURLConnection使用的都是java.net中的类,属于标准的java接口。
httpurlconnection是对socket的封装。类似httpclient,ftpClient,URLConnetcion之类的,是对专属协议的封装。
HttpURLConnection继承自URLConnection,差别在与HttpURLConnection仅仅针对Http连接。
HttpURLConnection或URLConnection连接完成后不会保持连接状态。
例如浏览器访问网址,页面加载完成后,将断开连接,如果再点击,会再次连接。
参考资料:
http://blog.youkuaiyun.com/mzyang272/article/details/8024357
Java中 HttpUrlConnection 与 Socket 连接的异同
http://bbs.youkuaiyun.com/topics/370244325
socket HttpURLConnection 通信异同
http://blog.youkuaiyun.com/zhuyijian135757/article/details/30261481
Socket、URLConnection 和HttpURLConnection的区别
http://blog.youkuaiyun.com/bibi1314123/article/details/17090927