- 浏览: 32063 次
- 性别:
- 来自: 上海
最新评论
java https http socket
- 博客分类:
- java
参考百度文库
http://wenku.baidu.com/view/76942f6ab84ae45c3b358c8c.html
java socket
http://www.iteye.com/topic/1007173
1。InetAddress类:封装了IP和域名。支持IPv4和IPv6。没有显式的构造函数,可以使用工厂方法(静态):getLocalHost, getByName(域名), getAllByName(一个域名多个IP);还有getByAddress,通过IP地址返回InetAddress对象。
2。1TCP/IP 客户套接字:Socket类, 构造后用getInputStream和getOutputStream操作数据。
构造:Socket(String hostName, int port)或 Socket(InetAddress iadd, int port)
2。2 URL类:协议名 + 地址+ 端口 + 文件。建立URL类可以获得连接的基本信息;如果要获得相关联的(网页)数据,需要用openConnection方法获得URLConnection对象。
2。3 URLConnection类:访问远程资源
3。TCP服务器套接字:ServerSocket类,监听连接。主要函数 accept。
4。数据报(UDP):DatagramPacket 类,数据容器;DatagramSocket 类,传输机制。DatagramPacket对象通常是被DatagramSocket对象的receive方法使用。
参考http://dr2tr.iteye.com/blog/233519
(2)socket 与 httpUrlconnection
Socket是底层实现,协议你要自己去写,不局限于http,可以是任何协议。
而类似httpclient, ftpClient,URLConnetcion之类的,是对专属协议的封装,当然由于部分实现原理,你可能无法完全控制连接操作,比如soTimeout这个参数。
urlconnection 链接 serverSocket 时所报的异常可以看出 其封装了 socket
ava.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at sun.net.NetworkClient.doConnect(NetworkClient.java:158)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:323)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:852)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:793)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:718)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:896)
at com.lifazhu.test.HTTPUtil.getResponseData(HTTPUtil.java:38)
at com.lifazhu.test.TestUrlConnection.main(TestUrlConnection.java:12)
new Socket("192.168.1.100",8888) 在不抛出异常的情况下,逻辑上的连接就已经建立了 才能读写流
urlconnection 需要在 openConnection连接 才能读写流
本质上都是socket传输报文,只是用UrlConnection传输的报文是http协议格式的(其实就是多出一个http协议的报文头)
(3) java httpurlconnection 与httpClient 区别
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能:HttpURLConnection。
HttpURLConnection是java的标准类,HttpURLConnection继承自URLConnection,可用于向指定网站发送GET请求、POST请求。它在URLConnection的基础上提供了如下便捷的方法:
- int getResponseCode():获取服务器的响应代码。
- String getResponseMessage():获取服务器的响应消息。
- String getResponseMethod():获取发送请求的方法。
- void setRequestMethod(String method):设置发送请求的方法。
在一般情况下,如果只是需要Web站点的某个简单页面提交请求并获取服务器响应,HttpURLConnection完全可以胜任。但在绝大部分情况下,Web站点的网页可能没这么简单,这些页面并不是通过一个简单的URL就可访问的,可能需要用户登录而且具有相应的权限才可访问该页面。在这种情况下,就需要涉及Session、Cookie的处理了,如果打算使用HttpURLConnection来处理这些细节,当然也是可能实现的,只是处理起来难度就大了。
为了更好地处理向Web站点请求,包括处理Session、Cookie等细节问题,Apache开源组织提供了一个HttpClient项目,看它的名称就知道,它是一个简单的HTTP客户端(并不是浏览器),可以用于发送HTTP请求,接收HTTP响应。但不会缓存服务器的响应,不能执行HTML页面中嵌入的Javascript代码;也不会对页面内容进行任何解析、处理。
- 创建HttpClient对象。
- 如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。
- 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。
- 调用HttpClient对象的execute(HttpUriRequest request)发送请求,执行该方法返回一个HttpResponse。
- 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。
发表评论
-
密码交换信息文件格式
2014-08-08 22:13 363DER-encoded certificate: .cer ... -
java xml
2013-10-22 13:03 614package com.lifz.server; imp ... -
java jar 发布 读取properties文件失败
2013-09-02 23:12 2434(1)java jar 发布 读取proper ... -
java jvm 参数
2013-07-12 23:27 409java jvm 参数 -Xms -Xmx -Xmn ... -
查找和删除重复记录
2013-06-14 08:28 459在几千条记录里,存在着些相同的记录,如何能用SQL语句 ... -
网站错误代码
2013-06-09 15:39 562[u][/u]HTTP 1xx-信息提示 这些状态代码表示临 ... -
socket 转发
2013-06-08 10:46 562两个socket的转发。 -
java环境变量
2013-06-05 14:43 0JAVA_HOME=C:\Program Files (x86 ... -
java heap oom
2013-05-30 11:10 426使用Java程序从数据库中查询大量的数据时出现异常:java. ... -
毕业流逝时间
2013-04-28 23:32 0<!DOCTYPE HTML PUBLIC &quo ... -
eclipse 快捷键
2013-04-19 16:57 01、ctrl+w 关闭当前文件 2、alt+左箭头 打开刚 ... -
java 类的初始化顺序
2013-03-24 21:09 496public class FatherClass { ... -
java只有值传递
2013-03-23 23:22 575值传递就是值参数只能有实参传给形参, 而不能由形参来改变实参. ... -
吸血鬼数字
2013-03-06 21:27 516package com.lifz.chapters4; ... -
java 看别人代码
2013-03-04 14:28 01)无从下手:先看接口,先看整体接口框架,再看细节,这时UML ... -
java 保留两位小数
2013-03-03 10:29 611public class BigDecimalTest { ... -
java work
2013-02-20 12:34 0java开发具备 1.2年以上工作经验,至少1个以上后台项 ... -
java 学习方法
2013-02-19 16:10 01 网上查找别人的易错总结 -
java 易错
2013-02-19 13:32 608对于正数 先按位取反(包括符号位) ,再求补 对于负数 先 ... -
java zip压缩多个文件
2012-12-23 21:19 1140import java.io.BufferedInpu ...
相关推荐
java nio 实现socketjava nio 实现socketjava nio 实现socketjava nio 实现socketjava nio 实现socket
java socket教程java socket教程java socket教程
javac Server.java java.exe Server 查看说明 可以简单得到http请求头 便于分析http
《Java TCP/IP Socket编程(原书第2版)》基于TCP/IP Socket相关原理,对如何在Java中进行Socket编程作了深入浅出的介绍。《Java TCP/IP Socket编程(原书第2版)》内容简明扼要,条理清晰,并在讲解相应的概念或编程...
java socket USB和 串口通讯,使用java程序与硬件通讯的三种方式。
JAVA Socket教程 Java网络编程之传输控制协议 Socket套接字—Java套接字编程
Java Socket 操作 Demo import java.awt.Color; import java.awt.Dimension; import java.awt.Point; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.BufferedReader; import ...
Java Socket 聊天通信演示代码 Java Socket 聊天通信演示代码
java socket client 断线重连的简单实现 有什么意见可以提哦
java 用socket 下载http 网页, 供参考, 其精髓是socket和http头部报文
Java实现Socket长连接和短连接,实现原理可参见个人博客
java socket 学习资料java socket 学习资料java socket 学习资料java socket 学习资料java socket 学习资料
javaCV将socket获取的视频流推到流媒体(RTMP)服务器所需要的jar
java socket使用加密协议传输对象
java socket源码解析 java socket源码解析 java socket源码解析 java socket源码解析
Java源码:Socket编程
Socket编程 QQ实现 JAVA
这本PDF书主要说java的 Socket的原理和用法
java.net包socket通信,基础客户端 和 服务端的通信传输实现
这个软件可以任意设置目标IP和端口实现连接相应的主机服务器,编写语言为java,安装时候需要有相应的java环境运行。