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的更多相关文章

  1. socket读写返回值的处理

    在调用socket读写函数read(),write()时,都会有返回值.如果没有正确处理返回值,就可能引入一些问题 总结了以下几点 1当read()或者write()函数返回值大于0时,表示实际从缓冲 ...

  2. Socket聊天程序——Common

    写在前面: 上一篇记录了Socket聊天程序的客户端设计,为了记录的完整性,这里还是将Socket聊天的最后一个模块--Common模块记录一下.Common的设计如下: 功能说明: Common模块 ...

  3. Socket聊天程序——客户端

    写在前面: 上周末抽点时间把自己写的一个简单Socket聊天程序的初始设计和服务端细化设计记录了一下,周二终于等来毕业前考的软考证书,然后接下来就是在加班的日子度过了,今天正好周五,打算把客户端的详细 ...

  4. Socket聊天程序——服务端

    写在前面: 昨天在博客记录自己抽空写的一个Socket聊天程序的初始设计,那是这个程序的整体设计,为了完整性,今天把服务端的设计细化记录一下,首页贴出Socket聊天程序的服务端大体设计图,如下图: ...

  5. Socket聊天程序——初始设计

    写在前面: 可能是临近期末了,各种课程设计接踵而来,最近在csdn上看到2个一样问答(问题A,问题B),那就是编写一个基于socket的聊天程序,正好最近刚用socket做了一些事,出于兴趣,自己抽了 ...

  6. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  7. Android Socket连接PC出错问题及解决

    最近测试问题:Android 通过Socket链接电脑,ip和端口都是正确的,也在同一网段,可android端就是报异常如下: 解决办法:测试电脑的防火墙可能开着,在控制面板把防火墙打开即可.

  8. Linux下的C Socket编程 -- server端的继续研究

    Linux下的C Socket编程(四) 延长server的生命周期 在前面的一个个例子中,server在处理完一个连接后便会立即结束掉自己,然而这种server并不科学啊,server应该是能够一直 ...

  9. Mono 3.2.3 Socket功能迎来一稳定的版本

    由于兴趣自己业余时间一直在搞.net下面的通讯应用,mono的存在得以让.NET程序轻松运行在Linux之下.不过经过多尝试Socket相关功能在Mono下的表现并不理想.不管性能还是吞吐能力方面离我 ...

  10. Demo源码放送:打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!

    随着HTML5 WebSocket技术的日益成熟与普及,我们可以借助WebSocket来更加方便地打通BS与CS -- 因为B/S中的WebSocket可以直接连接到C/S的服务端,并进行双向通信.如 ...

随机推荐

  1. Python面向对象中的“私有化”

    Python面向对象中的“私有化” Python并不直接支持私有方式,而要靠程序员自己把握在外部进行特性修改的时机. 为了让方法或者特性变为私有(从外部无法访问),只要在它的名字前面加上双下划线即可. ...

  2. springboot整合fastjson 将null转成空字符串

    /** * @Auther: mxf * @Date: 2019/4/18 09:12 * @Description: */ @Configuration @EnableWebMvc public c ...

  3. 在Centos上打Preempt-rt实时补丁

    1.系统centos6.5,内核2.6.31.6,补丁patch-2.6.31.6-rt19.bz2,以下方式获得: wget https://www.kernel.org/pub/linux/ker ...

  4. GET和POST请求区别

    关于http协议GET和POST方法的区别我们可以从各处得到比较一致的答案,今天我们来填一个面试中可能碰到的一个坑. 当面试官问你“你觉得GET和POST有什么区别"时,我们可能会想到以下几 ...

  5. python16_day03【集合、编码、函数、递归、内置函数】

    一.集合 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 #创建: s = {3,5,9,10} # ...

  6. JAVA垃圾回收笔记

    一.分析GC日志 /** * @author : Hejinsheng * @date : 2019/1/18 0018 * @Description: 模拟FULL GC/YOUNG GC * -X ...

  7. Java Web架构总结

    转载至:http://www.cnblogs.com/wuxl360/p/7489763.html 初始搭建 开始的开始,就是各种框架一搭,然后扔到Tomcat容器中跑就是了,这时候我们的文件,数据库 ...

  8. HDU - 6430 Problem E. TeaTree 2018 Multi-University Training Contest 10 (LCA+枚举因子)

    题意:一棵树,每个点都有自己val(1 <= val <= 1e5),而任意两个点u,v可以对lca(u,v) 产生gcd(valu,valv)的贡献,求每个点能接受到来自子树贡献的最大值 ...

  9. linux例行性工作调度学习(一)

    Linux系统中有一种例行性工作(crontab)可以调度,是通过crontab和at来实现的. 这两种工作调度: 一种是例行性的,就是每隔一定的周期要来办的事项. 一种是突发性的,就是这次做完以后就 ...

  10. 正则表达式和python的re模块

    0 正则表达式 0.1 常见的元字符 .:    匹配除\r\n之外的任何单个字符 *:    匹配前面的子表达式任意次,例如Zz*可以匹配Z,可以匹配Zz,也可以匹配Zzzzzzzzzz +:    ...