JavaSE基础复习:网络编程
来源:互联网 发布:网络电力仪表 编辑:程序博客网 时间:2024/06/11 13:14
------- android培训、java培训、期待与您交流! ----------
网络模型:OSI参考模型,TCP/IP参考模型;
TCP/IP参考模型:
应用层传输层(TCP/UDP)
网络层(IP层)
物理层和数据链路层
InetAddress类
public class InetAddressTest{public static void main(String[] args)throws Exception{// 根据主机名来获取对应的InetAddress实例InetAddress ip = InetAddress.getByName("www.baidu.com");// 判断是否可达System.out.println("百度:" + ip.toString() + " : "+ip.isReachable(5000));// 获取该InetAddress实例的IP字符串System.out.println(ip.getCanonicalHostName());System.out.println(ip.getHostName());System.out.println(ip.getHostAddress());// 根据原始IP地址来获取对应的InetAddress实例//InetAddress local = InetAddress.getByAddress(new byte[]{127,0,0,1});InetAddress local = InetAddress.getLocalHost();System.out.println("本机是否可达:" + local.isReachable(2000)+ " : " + local.getHostAddress()); // 获取该InetAddress实例对应的全限定域名System.out.println(local.getCanonicalHostName());}}运行结果是:
百度:www.baidu.com/61.135.169.125 : false
61.135.169.125
www.baidu.com
61.135.169.125
本机是否可达:true : 192.168.1.66
ACERCN---//---本机是否可达:true : 127.0.0.1-------localhost
UDP不是面向连接的
1、发送端
byte[] buf = "UDP发送端".getBytes();DatagramPacket dpSent = new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),30000);DatagramSocket ds = new DatagramSocket();ds.sent(dpSent);ds.close();
2、接收端
DatagramSocket ds = new DatagramSocket(30000);//接收端需要指定端口byte[] buf = new byte[4*1024];DatagramPacket dpRece = new DatagramPacket(buf,buf.length);ds.receive(dpRece);byte[] bufRece = dpRece.getData();System.out.println(new String(bufRece));广播地址:192.168.1.255
TCP客户端和服务端
Socket
客户端代码:Socket s = new Socket("192.168.1.66",9999);OutputStream out = s.getOutputStream();
ServerSocket
服务端代码:ServerSocket ss = new ServerSocket(9999);Socket s = ss.accept();InputStream in = s.getInputStream();OutputStream out = s.getOutputStream();
URLDecoder和URLEncoder
application/x-www-form-urlencoded MIME 格式转换String key = URLEncoder.encode("黑马Java程序员","gbk");//---%BA%DA%C2%EDJava%B3%CC%D0%F2%D4%B1String keyWord = URLDecoder.decode("%BA%DA%C2%EDJava%B3%CC%D0%F2%D4%B1","gbk");//---黑马Java程序员
UEL和URI
URL:统一资源定位符URI:统一资源标识符
URL的格式由下列三部分组成
第一部分是协议或称为服务方式httpshttpftp第二部分是存有该资源的主机IP地址和端口号省略为80
第三部分是主机资源的具体地址。如目录和文件名等。
第一部分和第二部分之间用“//”符号隔开
第二部分和第三部分用“/”符号隔开。
第一部分和第二部分是不可缺少的第三部分有时可以省略。
URL和URLConnection
URL和URI之间可以通过URL.toURI()和URI.toURL()相互转换。URL类可以通过构造函数得到一个URL实例,并提供了一系列getXxx方法,获取资源的各部分信息。
URL实例可以通过url.openStream()方法打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。
URLConnection类实例可以通过url.openConnection()方法获得,通过URLConnection实例可以获取关联url的输入和输出。
URLConnection conn = url.openConnection();conn.setRequestProperty(key,value);conn.getInputStream();conn.getOutputStream();Map<String,List<String>> map = conn.getRequestProperties(); //返回一个由此连接的一般请求属性构成的不可修改的 Map。Map<String,List<String>> map = conn.getHeaderFields(); //返回头字段的不可修改的 Map。
URL举例:
public class URLDemo {public static void main(String[] args) throws IOException {String str_url = "http://192.168.1.66:8080/myweb/1.html";URL url = new URL(str_url);//System.out.println("getProtocol:"+url.getProtocol());//System.out.println("getHost:"+url.getHost());//System.out.println("getPort:"+url.getPort());//System.out.println("getFile:"+url.getFile());//System.out.println("getPath:"+url.getPath());//System.out.println("getQuery:"+url.getQuery());//InputStream in = url.openStream();//获取url对象的Url连接器对象。URLConnection conn = url.openConnection();//String value = conn.getHeaderField("Content-Type");//System.out.println(value);//System.out.println(conn);//输出sun.net.www.protocol.http.HttpURLConnection:http://192.168.1.100:8080/myweb/1.htmlInputStream in = conn.getInputStream();byte[] buf = new byte[1024];int len = in.read(buf);String text = new String(buf,0,len);System.out.println(text);in.close();}}
客户端和服务端原理
最常见的客户端:浏览器 :IE。
最常见的服务端:
服务器:Tomcat。
自定义服务端,使用已有的客户端IE,了解一下客户端给服务端发了什么请求?
发送的请求是:
GET /myweb/1.html HTTP/1.1 请求的资源路径 http协议版本。请求消息头 . 属性名:属性值
Accept: */*
Accept-Language: zh-cn,zu;q=0.5
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)
Host: 192.168.1.66:9090
Connection: Keep-Alive
//空行
//请求体。
//服务端发回应答消息。
HTTP/1.1 200 OK //应答行,http的协议版本 应答状态码 应答状态描述信息应答消息属性信息。 属性名:属性值
Server: Apache-Coyote/1.1
ETag: W/"199-1323480176984"
Last-Modified: Sat, 10 Dec 2011 01:22:56 GMT
Content-Type: text/html
Content-Length: 199
Date: Fri, 11 May 2012 07:51:39 GMT
Connection: close
//空行
//应答体。
网络结构,
1,C/S client/server
特点:该结构的软件,客户端和服务端都需要编写。
可发成本较高,维护较为麻烦。
好处:
客户端在本地可以分担一部分运算。
2,B/S browser/server
特点:该结构的软件,只开发服务器端,不开发客户端,因为客户端直接由浏览器取代。
开发成本相对低,维护更为简单。
缺点:所有运算都要在服务端完成。
------- android培训、java培训、期待与您交流! ----------
- JavaSE基础复习:网络编程
- 【javase复习】## 网络编程 ##
- JAVASE基础 Item -- 网络编程
- JAVASE基础-day26(网络编程)
- 【JavaSE笔记】网络基础&网络编程
- java 基础复习 网络编程
- Java 网络编程基础复习
- (JavaSE)基础内容复习
- JavaSE基础复习-1
- JavaSE基础复习-2
- 黑马程序员--javaSE--网络编程基础总结
- JavaSe基础XX20——网络编程
- JavaSE基础网络编程的小结
- JavaSE复习之十三 高级特性:网络编程
- JavaSE基础复习一 :基础知识
- JavaSE基础复习六:多线程
- JavaSe基础XX20——网络编程_2
- javase--7网络编程
- 2012七大重要技术趋势
- 在虚拟机上安装MacOS
- ceph 一键部署
- 2013年IT趋势:移动和新兴市场推动增长
- C#彩色艺术化二维码样式设计(仅说思路)
- JavaSE基础复习:网络编程
- mysql 查看并修改编码
- wordpress自定义菜单wp_nav_menu 代码详解
- linux shell 字符串操作(长度,查找,替换)详解
- 写在2012结尾,2013的开始
- poj3067 Japan 树状数组&逆序对
- ASP.NET中上传多文件时,用日期时间命名新文件,文件丢失问题
- 2012年总结&&2013年展望
- 新的一年新的开始