java网络编程(下)
一、看一个简单的浏览器服务端的例子
需求:服务端向浏览器发送一串字符,浏览器接收到。
服务端程序
import java.io.*;
import java.net.*;
public class ServerDemo {public static void main(String[] args) throws Exception {ServerSocket ss = new ServerSocket(11001);Socket s = ss.accept();String ip =s.getInetAddress().getHostAddress();System.out.println("ip" + ip + "...connected");BufferedReader bufr = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter pw = new PrintWriter(s.getOutputStream());pw.println("我有一头小毛驴,我从来也不骑");pw.flush();s.close();ss.close();}}
当在浏览器中输入http://192.168.1.103:11001/,可以看到浏览器显示服务端发送来的数据。
再看一下升级版,当浏览器向服务端发出请求时,究竟发送了什么?
重写服务端
import java.io.*;
import java.net.*;
public class ServerDemo1 {public static void main(String[] args) throws Exception {ServerSocket ss = new ServerSocket(11001);Socket s = ss.accept();String ip =s.getInetAddress().getHostAddress();System.out.println("ip" + ip + "...connected");InputStream in = s.getInputStream();byte[] buf = new byte[1024];int length = in.read(buf);System.out.println(new String(buf,0,length));PrintWriter pw = new PrintWriter(s.getOutputStream());pw.println("我有一头小毛驴,我从来也不骑");pw.flush();s.close();ss.close();}}
可以看一下输出结果
GET / HTTP/1.1
Host: 192.168.1.103:11001
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:38.0) Gecko/20100101 Firefox/38.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
以上便是http的请求消息头。
http协议目前只有两个版本,一个是1.0,一个是1.1
二、URL
示例
import java.net.*;
public class URLDemo {public static void main(String[] args) throws Exception{ URL url = new URL("http://localhost:8080/webProject/test.html");System.out.println("getFile():"+url.getFile());System.out.println("getHost():"+url.getHost());System.out.println("getPath():"+url.getPath());System.out.println("getPort():"+url.getPort());System.out.println("getProtocol():"+url.getProtocol());System.out.println("getQuery():"+url.getQuery());}}
结果
getFile():/webProject/test.html
getHost():localhost
getPath():/webProject/test.html
getPort():8080
getProtocol():http
getQuery():null
可以看到getFile和getPath获取的信息相同,这是在getQuery没有的情况下。
再来看令一种url:
import java.net.*;
public class URLDemo {public static void main(String[] args) throws Exception{ URL url = new URL("http://localhost:8080/webProject/test.html?name=haha&age=20");System.out.println("getFile():"+url.getFile());System.out.println("getHost():"+url.getHost());System.out.println("getPath():"+url.getPath());System.out.println("getPort():"+url.getPort());System.out.println("getProtocol():"+url.getProtocol());System.out.println("getQuery():"+url.getQuery());}}
getFile():/webProject/test.html?name=haha&age=20
getHost():localhost
getPath():/webProject/test.html
getPort():8080
getProtocol():http
getQuery():name=haha&age=20
当getQuery不为空的情况下,getFile和getPath是不一样的。
三、URLConnection
需求:客户端向tomcat服务器发出请求,客户端打印服务端发送来的请求。
import java.net.*;
import java.io.*;public class URLConnectionDemo {/*** @param args*/public static void main(String[] args)throws Exception {// TODO Auto-generated method stubURL url = new URL("http://localhost:8080/webProject/test.html?name=haha&age=20");URLConnection con = url.openConnection();InputStream in =con.getInputStream();byte[] buf = new byte[1024];int len = in.read(buf);System.out.println(new String(buf,0,len));}}
响应结果
<html>
<body>
<h1>这是我的主页<h1>
<font size = 5 color = red> 静夜思 </font>
<div center>
窗前明月光<br>
疑是地上霜<br>
举头望明月<br>
低头思故乡<br>
<div>
</body></html>
java网络编程(下)相关推荐
- Java - 网络编程(NetWork)
Java - 网络编程(NetWork) 一.java.net包下的 InetAddress 类的使用: > 一个 InetAddress 代表着一个IP地址 > 主要用来查看本机的IP和 ...
- 【Java】 Java网络编程总结
一.网络编程三要素: IP地址:每个设备在网络中的唯一标识. 端口号:每个程序在设备上的唯一标识. 协议:为计算机网络中进行数据交换而建立的规则或约定的集合. UDP: 面向无连接,数据不安全,速度 ...
- 实验五 Java网络编程及安全 实验报告 20135232王玥
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序与设计 班级:1352 姓名:王玥 学号:20135232 成绩: 指导 ...
- NIO详解(一):java网络编程IO总结(BIO、NIO、AIO)
1.基本概念 在Java网络通信中,最基本的概念就是Socket编程了.Socket又称"套接字" 向网络发出请求或者应答网络请求. Socket 和ServerSocket类库位 ...
- 04.Java网络编程(转载)
1.网络编程 1.1计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输. 按照计算机网络的定义,通过一定的物理设备将处于不同位置的计算机连接起来组成的网络,这个网络中包含 ...
- python网络编程视频教程_Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密)...
Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密) 全面理解BIO/NIO/AIO 网络层编程,是每一个开发者都要面对的技术.课程为解决大家学习网络层知识的难题, ...
- java网络编程(二)
注意:架构师学习资源已更新. 获取方式:在公众号内回复"架构师资源" 文章推荐 精选java等全套视频教程 精选java电子图书 大数据视频教程精选 1.2 网络编程技术 前面介绍 ...
- 【带你入门】java网络编程
网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...
- java消息头,Java网络编程从入门到精通:HTTP消息头字段
Java网络编程从入门到精通:HTTP消息头字段 一.通用头字段 1. Connection 这个字段只在HTTP1.1协议中存在.它决定了客户端和服务器进行了一次会话后, 服务器是否立即关闭网络连接 ...
- java网络编程阻塞_Java网络编程由浅入深三 一文了解非阻塞通信的图文代码示例详解...
本文详细介绍组成非阻塞通信的几大类:Buffer.Channel.Selector.SelectionKey 非阻塞通信的流程ServerSocketChannel通过open方法获取ServerSo ...
最新文章
- #6164. 「美团 CodeM 初赛 Round A」数列互质-莫队
- shell 调试 2例
- mysql nosql 同步_使用canal和canal_mysql_nosql_sync同步mysql数据
- 这难道不是.NET5的bug? 在线求锤?
- 播放框架模块:分而治之
- 宁德技校学计算机报名,你知道现在宁德市师范学校计算机报2012年的考试开始报名了吗,怎样报名啊...
- python必看经典书籍:笨办法学python
- hadoop2.6分布式环境搭建
- __proto__和prototype 1
- Spring MVC浅入浅出——不吹牛逼不装逼
- CFEducational Codeforces Round 66题解报告
- 大数据技术原理与应用(课后作业)
- smarty入门教程
- Java - 类加载器
- 如何解决Access denied for user ''@'localhost' (using password: NO)错误
- 如何设计财务对账系统 —— 从0到1搭建对账中心实战
- 电脑重装系统详细教程(以安装win10为例)
- oracle 实用记录
- 动态规划问题(Dynamic Programming)
- 异常:getInputStream() has already been called for this request