文档章节

JAVA编写的使用Socket模拟Http的GET操作

雷霄骅
 雷霄骅
发布于 2013/09/30 16:51
字数 179
阅读 67
收藏 0

JAVA编写的使用Socket模拟Http的GET操作 看后就很容易理解Web浏览器的原理了。

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;

public class TestSocket {
  String host = "www.javathinker.org";
  int port = 80;
  Socket socket;

  public void createSocket() throws Exception {
    socket = new Socket("www.163.com", 80);
  }

  public void communicate() throws Exception {
    StringBuffer sb = new StringBuffer("GET / HTTP/1.1/r/n");
    sb.append("Host: <A href="www.163.com" mce_href="www.163.com" target=_blank>www.163.com</A>/r/n");
    sb.append("Connection: Keep-Alive/r/n");
    sb.append("Accept: */*/r/n/r/n");

    // 发出HTTP请求
    OutputStream socketOut = socket.getOutputStream();
    socketOut.write(sb.toString().getBytes());
    socket.shutdownOutput(); // 关闭输出流

    // 接收响应结果
    System.out.println(socket);

    InputStream socketIn = socket.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(socketIn));
    String data;
    while ((data = br.readLine()) != null) {
      System.out.println(data);
    }
    socket.close();
  }

  public static void main(String args[]) throws Exception {
    TestSocket client = new TestSocket();
    client.createSocket();
    client.communicate();
  }

}

本文转载自:

共有 人打赏支持
雷霄骅
粉丝 194
博文 419
码字总数 2129
作品 4
朝阳
程序员
[转]两种高性能I/O设计模式(Reactor/Proactor)的比较

【原文地址:http://www.cppblog.com/pansunyou/archive/2011/01/26/iodesign_patterns.html】 综述 这篇文章探讨并比较两种用于TCP服务器的高性能设计模式. 除了介绍现有的解决方案, 还提出...

xumaojun
05/02
0
0
最近仔细研究了一下Java的NIO以及线程并发,搞清了点思路,特作笔记如下(NIO篇)

[转]http://www.cnblogs.com/feidao/archive/2005/07/15/193788.html 因为前段时间的项目需要写一些高性能服务器,结果写出来的结果是五花八门,我们要求使用NIO编写异步服务器,但是竟然有人...

风林火山
2010/12/26
0
1
多线程编程读书笔记之线程中断的本质

Java试图提供过抢占式限制中断,但问题多多,例如已被废弃的Thread.stop、Thread.suspend和 Thread.resume等。另一方面,出于Java应用代码的健壮性的考虑,降低了编程门槛,减少不清楚底层机...

刘学炜
2012/07/03
0
0
JMeter学习-001-JMeter初识

Apache JMeter是Apache组织开发的基于Java的开源压力测试工具(个人发现也可用于接口测试)。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试...

拎壶冲冲冲
05/29
0
0
android的NDK和java进行本地socket通信

关于Android应用与Framework的socket通信,相信关心这个问题的朋友们已经看过《android使用socket使底层和framework通信》这篇文章,美中不足的是作者只贴出一些关键的代码片段而并没有放出源...

shouyong
2012/12/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

树莓派上安装 Nextcloud 云

# install docker and docker composesudo apt-get updatesudo apt-get install git docker-composecurl -sSL https://get.docker.com | sh# fetch projectcd ~git clone https://git......

How11
4分钟前
0
0
python 基本语法

布尔值:True False,操作符有 and, or, not; 常量通常使用大写表示,如PI = 3.14159265359; 除法操作符有 /, //, %,如 10 / 3 = 3.3333333333333335,10 // 3 = 3, 10 % 3 = 1; 在计算机内存中...

bug_404
6分钟前
0
0
centos 下安装 elastic search 启动的问题

正常步骤 1Download and unzip Elasticsearch 2 Run bin/elasticsearch 3 Run curl http://localhost:9200/ 异常信息: root 账户启动报错,Exception in thread "main" Java.lang.RuntimeE......

xiaomin0322
12分钟前
0
0
mysql_exceptions.OperationalError: 1054

错误:python连接Mysql错误:_mysql_exceptions.OperationalError: (1054, "Unknown column 'CVE' in 'field lis解决办法 注:要根据自己具体情况进行判断,可以 print sql % args,来判断该...

fang_faye
15分钟前
0
0
分布式数据库DDM Sidecar模式负载均衡

简介 1.分布式数据库中间件 DDM 分布式数据库中间件(Distributed Database Middleware)是解决数据库容量、性能瓶颈和分布式扩展问题的中间件服务,提供分库分表、读写分离、弹性扩容等能力...

中间件小哥
19分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部