01_1_Socket实现

1.什么是MIME

Multipurpos Internet Mail Extension

指明白传送内容的格式

最早用于邮件附件

2.HTTP协议基础

HTTP(Hypertext Transfer Protocol,超文本传输协议)

HTTP是以明文方式发送数据的

用于从WWW服务器传输超文本到本地浏览器的传输协议。

HTTP协议是以TCP/IP为基础的高层协议。

现在广泛使用的版本HTTP/1.1

3.socket实现

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.Socket;

public class TestHTTP {

public static void main(String[] args) throws Exception {

Socket s = new Socket("127.0.0.1", 8080);

//建立一个到服务器的连接,127.0.0.表示要连接的ip, 8080表示要连接的端口

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

//Output只能写 Input只能读 OutputStreamWriter 提供转换的字符流 BufferedWriter 提供缓存功能

bw.write("Get / HTTP/1.1");

//Get 表示处理的方法  /表示处理的资源 HTTP/1.1处理的协议

bw.newLine();

//留一个空行

bw.write("Host: 127.0.0.1:8080");

//指定Host,因为有可能一个IP地址,管理多个域名

bw.newLine();

bw.write("Content-Type: text/html");

//指定访问的是什么类型的资源

bw.newLine();

bw.newLine();

//表示结束

bw.flush();

//清空缓存区的内容

BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));

String str = null;

while((str = br.readLine()) != null) {

System.out.println(str);

//循环读取从服务端的输入流

}

bw.close();

br.close();

s.close();

//关闭响应的流

}

}

01_1_Socket实现的更多相关文章

随机推荐

  1. tarjan求强连通分量的思考

    我是按照这里的思路来的.这个博文只是感性理解. 递归树 关于递归树,这篇博文讲的很好,我只是给自己总结一下. 定义vis数组,在dfs连通图时赋予它们不同的含义: vis=0,表示这个点没有被访问. ...

  2. css清除浮动的方法总结

    在各种浏览器中显示效果也有可能不相同,这样让清除浮动更难了,下面总结8种清除浮动的方法,测试已通过 ie chrome firefox opera,需要的朋友可以参考下     清除浮动是每一个 we ...

  3. SPA单页应用前后分离微信授权

    项目基于微信公众号开发,业务完全依赖微信授权,也就是用户进入页面已经完成授权获取到用户的OpenId. 需要有一个授权中间页:author.vue 基本实现思路: 无论使用哪个url进入页面都会先触发 ...

  4. 密码暴力破解工具acccheck使用

    title: acccheck categories: Password Attacks tags: [passwords,kali linux,acccheck,infogathering,pass ...

  5. JDK 简介

    JDK简介 JDK java开发工具包 JRE java 运行时环境 JVM java虚拟机 三者的关系:JDK 包含 JRE,JRE 包含 JVM Java的核心优势是跨平台,由JVM虚拟机实现的. ...

  6. CentOS6.7上安装nginx1.8.0

    主题: CentOS6.7上安装nginx1.8.0 环境准备: 1.gcc-c++ 示例:yum install gcc-c++ 安装:gcc-c++ gcc-c++编译工具 2.PCRE(Perl ...

  7. swift 广告轮播图

    import UIKit import Kingfisher class BannerView: UIView,UIScrollViewDelegate{ enum ImageType{ case I ...

  8. BZOJ 1036 && Luogu P2590 [ZJOI2008]树的统计 树链剖分

    链剖裸题...你值得一做~ 用线段树多维护一个mx,少写一个tag #include<cstdio> #include<iostream> #define ll long lo ...

  9. python 8 函数

    调用函数 Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数.可以直接从Python的官方网站查看文档: 也可以在交 ...

  10. (转载)Python中模块的发布与安装

    模块(Module) Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个 ...