通过socket实现http通讯代码理解

1、首先构造http协议报头:

String dd = "GET http://www.baidu.com HTTP/1.1" +
        "\r\n" +
        "Host: www.baidu.com" +
        "\r\n" +
        "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0" +
        "\r\n" +
        "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" +
        "\r\n" +
        "Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3" +
        "\r\n" +
        "Accept-Encoding: gzip, deflate" +
        "\r\n" +
        "Connection: keep-alive" +
        "\r\n" +
        "\r\n";

2、使用socket发送请求:

Socket socket = new Socket(InetAddress.getByName("www.baidu.com"),80);
OutputStream os = socket.getOutputStream();
os.write(dd.getBytes());
os.flush();

3、接受服务端返回的数据:

InputStream is = socket.getInputStream();
int count = 0;
byte[] b = new byte[1024];
while((count = is.read(b))!=-1){

String ss = new String(b,0,count,"UTF-8");
System.out.print(ss);

}
时间: 2024-11-17 02:16:04

通过socket实现http通讯代码理解的相关文章

解决Socket沾包问题——C#代码

解决Socket沾包问题——C#代码 前天晚上,曾经的一个同事问我socket发送消息如果太频繁接收方就会有消息重叠,因为当时在外面,没有多加思考 第一反应还以为是多线程导致的数据不同步导致的,让他加个线程锁搞定.后来回到家慢慢思考感觉这个和加锁没啥关系,如果是多线程导致的,消息只会被覆盖呀.后来就上网搜索socket 消息重叠,后来了解到这属于socket沾包. 简单以自己的理解介绍下Socket沾包. Socket沾包简单说就是:Socket发送方 发送消息很频繁导致接收方接收到的消息是之前

通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的

实验一:通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的 学号:20135114 姓名:王朝宪 注: 原创作品转载请注明出处   <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1 1)实验部分(以下命令为实验楼64位Linux虚拟机环境下适用,32位Linux环境可能会稍有不同) 使用 gcc –S –o main.s main.c -m32 命令编译成汇编代码,如下代码中的数字请自行修改以防与

项目日志之基于Java socket的网络通讯

Java API网络类包中的Socket类是网络上运行的两个程序间双向通信的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上数据的传递.我们打算通过Java中基于Socket的网络编程实现一个简单的网络通信程序.这就是我们团队项目(开发一款简单的通讯软件,其基本功能是实现一对一的网络信息通讯,并努力向一对多和多对多靠近)的主要内容. 一.Java socket通信开发原理(查阅资料): 服务器使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端

用代码理解Acticity启动模式

本章内容 Activity 四种启动模式的理论知识 代码理解 Activity 四种启动模式的理论知识 standard 默认模式,可以不用写配置.在这个模式下,都会默认创建一个新的实例.因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加. singleTop 当活动的启动模式指定为 singleTop,在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例,如果不是在栈顶,那么就会再次创建一个实例. singleTask 启动模式为

.Net中BS端代码 理解

按钮 触发功能   <a class="button whiteButton"  href="javascript:void()"  onclick="AdminInfoPwd_EditPwd()">确定</a></span> function AdminInfoPwd_EditPwd() {    $(".errorMsg").html("");    var pwd

C# Socket的TCP通讯

Socket的TCP通讯 一. socket的通讯原理 服务器端的步骤如下. (1)建立服务器端的Socket,开始侦听整个网络中的连接请求. (2)当检测到来自客户端的连接请求时,向客户端发送收到连接请求的信息,并建立与客户端之间的连接. (3)当完成通信后,服务器关闭与客户端的Socket连接. 客户端的步骤如下. (1)建立客户端的Socket,确定要连接的服务器的主机名和端口. (2)发送连接请求到服务器,并等待服务器的回馈信息. (3)连接成功后,与服务器进行数据的交互. (4)数据处

iOS之即时通讯相关理解

Socket: 1>Socket又称"套接字” 2>网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 3>应用程序通常通过"套接字"向网络发出请求或者应答网络请求 网络通信的要素: 1>网络上的请求就是通过Socket来建立连接然后互相通信 2>IP地址(网络上主机设备的唯一标识) 3>端口号(定位程序) 4>用于标示进程的逻辑地址,不同进程的标示 5>有效端口:0~65535,其中0~

UDP 通讯代码

在使用 RAS使用拨号网络拨号的类建立 TCP/IP后,接下来是通过 TCP/UDP 进行数据的传输. 下面是使用 UDP 的例子,分为头文件和源代码 头文件zhUDPCE.h : 1 // UDP.h: interface for the CZhUDP class. 2 // 3 ////////////////////////////////////////////////////////////////////// 4 #ifndef _ZH_DUP_CE_H_ 5 #define _ZH

Faster RCNN代码理解(Python)

转自http://www.infocool.net/kb/Python/201611/209696.html#原文地址 第一步,准备 从train_faster_rcnn_alt_opt.py入: 初始化参数:args = parse_args() 采用的是Python的argparse 主要有–net_name,–gpu,–cfg等(在cfg中只是修改了几个参数,其他大部分参数在congig.py中,涉及到训练整个网络). cfg_from_file(args.cfg_file) 这里便是代用