文档章节

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();
  }

}

本文转载自:

共有 人打赏支持
雷霄骅
粉丝 197
博文 419
码字总数 2129
作品 4
朝阳
程序员
私信 提问
多线程编程读书笔记之线程中断的本质

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

刘学炜
2012/07/03
0
0
Apache Mina 网络通信

Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我...

Mr&Cheng
2013/01/20
0
0
[转]两种高性能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
Android Java 程序员必备开发工具

对于Java,有两种截然不同的观点:一种认为Java是最简单功能最强大的编程语言之一,另一种则表示这种编程语言既难用又复杂。 下面这些工具或许功能和作用不同,但是有着一个共同的主旨,那就...

拉偶有所依
2015/06/11
0
1

没有更多内容

加载失败,请刷新页面

加载更多

数据进一步优化篇:千万级数据下的Mysql优化

前言 平时在写一些小web系统时,我们总会对mysql不以为然。然而真正的系统易用应该讲数据量展望拓展到千万级别来考虑。因此,今天下午实在是无聊的慌,自己随手搭建一个千万级的数据库,然后...

hansonwong
8分钟前
0
0
【亲测】centos 7 下安装cuDNN

【亲测】centos 7 下安装cuDNN cudnn: https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v7.4.1.5/prod/10.0_20181108/cudnn-10.0-linux-x64-v7.4.1.5.tgz cudnn code ......

Goopand
18分钟前
0
0
说一说$emit和$on

一、$emit 1、this $emit('自定义事件名',要传送的数据); 2、触发当前实例上的事件,要传递的数据会传给监听器; 二、$on 1、VM.$on('事件名',callback) --------------------callback回调...

文文1
19分钟前
0
0
画出wav文件声音数据的波形曲线

wav文件的格式都有介绍 另外:wav总播放时间长度:如何得到WAV文件播放的总时间? 1、直接读取wav文件头信息,从文件起始地址偏移28个字节长度为4个字节保存的是每秒钟播放的字节数,从文件起...

whoisliang
35分钟前
1
0
0030-如何在CDH中安装Kudu&Spark2&Kafka

1.概述 在CDH的默认安装包中,是不包含Kafka,Kudu和Spark2的,需要单独下载特定的Parcel包才能安装相应服务。本文档主要描述在离线环境下,在CentOS6.5操作系统上基于CDH5.12.1集群,使用C...

Hadoop实操
36分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部