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的服务端,并进行双向通信.如 ...
随机推荐
- tpot蜜罐平台搭建
iso安装:https://github.com/dtag-dev-sec/tpotce autoinstaller安装:https://github.com/dtag-dev-sec/tpotce ...
- An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.
与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (provider: TCP ...
- 对 Java Integer.valueOf() 的一些了解
从一道选择题开始 分析 选项A 选项A中比较的是i01和i02,Integer i01=59这里涉及到自动装箱过程,59是整型常量,经包装使其产生一个引用并存在栈中指向这个整型常量所占的内存,这时 ...
- 笔记——Springboot response、ServletOutputStream、图形验证码显示慢
今天遇到一个图形验证码加载很慢的问题,大概耗时有200~500毫秒左右. 根据追踪,图形验证码图片生成耗时0~1毫秒,而response.getOutputStream.write()将图片写入前台页 ...
- hadoop08---读写锁
ReentrantLock 直接使用lock接口的话,我们需要实现很多方法,不太方便,ReentrantLock是唯一实现了Lock接口的类,并且ReentrantLock提供了更多的方法,Reen ...
- Linux网络相关命令firewalld和netfilter、iptables 使用(6/22)
iptables和netfilter的关系: netfilter在内核空间的代码根据table中的rules,完成对packet的分析和处置.但是这些table中的具体的防火墙rules,还是必须由系 ...
- 基于SSM的单点登陆05
springmvc.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...
- menubar下面的选项不可以输入中文
这是一个QT5的bug. 1.不用中文,使用英文: 2.先输入中文,然后在属性Action里面的text里改成中文.
- Spring_通过工厂方法配置 Bean
beans-factory.xml <?xml version="1.0" encoding="UTF-8"?><beans xmlns=&q ...
- jQ&js给label
<strong>当前角色:</strong><label id="lblRoleName" style="margin-bottom: 0p ...