socket http read
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.net.Authenticator;
- import java.net.HttpURLConnection;
- import java.net.InetSocketAddress;
- import java.net.PasswordAuthentication;
- import java.net.Proxy;
- import java.net.Socket;
- import java.net.SocketAddress;
- import java.net.URL;
- import java.util.ArrayList;
- import java.util.List;
- public class HttpTest {
- public static void main(String[] args) {
- socket_http_reade();
- }
- public static void socket_http_reade() {
- String hostname = "10.63.9.55";
- int port = 80;
- String httpPackage = getTempGetMethodPackage(hostname);
- StringBuilder httpRsp = new StringBuilder();
- Socket s = new Socket();
- try {
- s.connect(new InetSocketAddress(hostname, port), 1000);
- OutputStream out = s.getOutputStream();
- out.write(httpPackage.toString().getBytes("utf-8"));
- out.flush();
- InputStream in = s.getInputStream();
- int readed = 0;
- int contentLength = 0;
- while (true) {
- byte[] lineDatas = readHttpHeaderLine(in);
- readed += lineDatas.length;
- String line = new String(lineDatas, "utf-8");
- if (line.startsWith("Content-Length")) {
- String[] tmp = line.split(":");
- contentLength = Integer.parseInt(tmp[1].trim());
- }
- httpRsp.append("> " + line);
- if (line.equals("\r\n")) {
- break;
- }
- }
- byte[] bodys = new byte[contentLength];
- readed = 0;
- while (readed < contentLength) {
- byte b = (byte) in.read();
- bodys[readed] = b;
- readed++;
- }
- String body = new String(bodys, "utf-8");
- System.out.print(body);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- public static byte[] readHttpHeaderLine(InputStream in) throws IOException {
- byte[] buf = new byte[200];
- int readed = 0;
- byte b;
- do {
- b = (byte) in.read();
- int bufLen = buf.length;
- if (readed > bufLen) {
- byte[] temp = new byte[bufLen * 2];
- for (int i = 0; i < bufLen; i++) {
- temp[i] = buf[i];
- }
- buf = temp;
- } else {
- buf[readed] = b;
- }
- readed++;
- } while (((char) b) != '\n');
- byte[] temp = new byte[readed];
- for (int i = 0; i < readed; i++) {
- temp[i] = buf[i];
- }
- return temp;
- }
- public static String getTempGetMethodPackage(String host) {
- StringBuilder httpPackage = new StringBuilder();
- httpPackage.append("GET / HTTP/1.1\r\n");
- httpPackage.append("host: " + host + "\r\n");
- httpPackage.append("Proxy-Connection: keep-alive");
- httpPackage.append("Cache-Control: max-age=0\r\n");
- httpPackage.append("Upgrade-Insecure-Requests: 1\r\n");
- httpPackage.append(
- "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.101 Safari/537.36\r\n");
- httpPackage.append("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n");
- httpPackage.append("Accept-Encoding: gzip, deflate, sdch\r\n");
- httpPackage.append("Accept-Language: zh-CN,zh;q=0.8\r\n");
- httpPackage.append("\r\n");
- return httpPackage.toString();
- }
- }
socket http read的更多相关文章
- socket读写返回值的处理
在调用socket读写函数read(),write()时,都会有返回值.如果没有正确处理返回值,就可能引入一些问题 总结了以下几点 1当read()或者write()函数返回值大于0时,表示实际从缓冲 ...
- Socket聊天程序——Common
写在前面: 上一篇记录了Socket聊天程序的客户端设计,为了记录的完整性,这里还是将Socket聊天的最后一个模块--Common模块记录一下.Common的设计如下: 功能说明: Common模块 ...
- Socket聊天程序——客户端
写在前面: 上周末抽点时间把自己写的一个简单Socket聊天程序的初始设计和服务端细化设计记录了一下,周二终于等来毕业前考的软考证书,然后接下来就是在加班的日子度过了,今天正好周五,打算把客户端的详细 ...
- Socket聊天程序——服务端
写在前面: 昨天在博客记录自己抽空写的一个Socket聊天程序的初始设计,那是这个程序的整体设计,为了完整性,今天把服务端的设计细化记录一下,首页贴出Socket聊天程序的服务端大体设计图,如下图: ...
- Socket聊天程序——初始设计
写在前面: 可能是临近期末了,各种课程设计接踵而来,最近在csdn上看到2个一样问答(问题A,问题B),那就是编写一个基于socket的聊天程序,正好最近刚用socket做了一些事,出于兴趣,自己抽了 ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
- Android Socket连接PC出错问题及解决
最近测试问题:Android 通过Socket链接电脑,ip和端口都是正确的,也在同一网段,可android端就是报异常如下: 解决办法:测试电脑的防火墙可能开着,在控制面板把防火墙打开即可.
- Linux下的C Socket编程 -- server端的继续研究
Linux下的C Socket编程(四) 延长server的生命周期 在前面的一个个例子中,server在处理完一个连接后便会立即结束掉自己,然而这种server并不科学啊,server应该是能够一直 ...
- Mono 3.2.3 Socket功能迎来一稳定的版本
由于兴趣自己业余时间一直在搞.net下面的通讯应用,mono的存在得以让.NET程序轻松运行在Linux之下.不过经过多尝试Socket相关功能在Mono下的表现并不理想.不管性能还是吞吐能力方面离我 ...
- Demo源码放送:打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!
随着HTML5 WebSocket技术的日益成熟与普及,我们可以借助WebSocket来更加方便地打通BS与CS -- 因为B/S中的WebSocket可以直接连接到C/S的服务端,并进行双向通信.如 ...
随机推荐
- kubestack 源码分析
简介:KubeStack is an OpenStack network provider for kubernetes.KubeStack is devided into two functions ...
- 从微观到宏观,遍历网络安全这幅有向图——By Me
“可视化”是网络安全领域的前沿技术与可靠保障.笔者所在的西电捷通是一家领先的网络安全基础技术国际研究机构.一直从事网络安全基础技术研发与技术转移.笔者在2011年底入职典型技术之上的西电捷通公司,那时 ...
- golang redis的模式订阅
c := redisPool.Get() psc := redis.PubSubConn{c} psc.PSubscribe("aa*") for { switch v := ps ...
- Php ArrayIterator的几个常用方法
搜索商低..从php.net找到 ,自己翻译一下 总结在一起 rewind() 指针回到初始位置 valid() 判断数组当前指针下是否有元素 key() 数组键 ...
- sql server数据库字段名要注意不能叫file
sql server数据库字段名要注意不能叫file 如java 中 private string file,这是sql 的关键字
- 【转】Linux 下取进程占用 cpu/内存 最高的前10个进程
# Linux 下 取进程占用 cpu 最高的前10个进程ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head # linux 下 取进程占用内存 ...
- Oracle数据库安全(二)资源限制于口令管理
一.资源限制与口令管理概述 1.概要文件介绍: 在Oracle数据库中,用户对数据库和系统资源使用的限制以及对用户口令的管理的是建立概要文件实现的.它是Oracle数据库安全策略的重要组成不封.每个数 ...
- overflow应用场景
overflow属性可以设置的值有5种: (1)visible 默认值,内容不会裁剪,呈现在元素框之外: (2)hidden 内容会被裁剪,并且子元素内容是不可见的: (3)scroll 内容会被裁 ...
- 2018年Java面试题搜集
2018年Java面试题搜集 一.Servlet执行流程(浏览器访问servlet的过程容器) 客户端发起http请求,web服务器将请求发送到servlet容器,servlet容器解析url并根据w ...
- Zabbix Windos agent 安装
系统:Windos 2008 R2 x64 服务:Zabbix_agents_3.0.4.win 一.安装Zabbix_agents_3.0.4.win 1.下载Zabbix_agents_3.0.4 ...