黑马程序员--网络编程

----------------------- android培训java培训java学习型技术博客、期待与您交流! ----------------------

网络编程

(一) UDP协议与TCP协议有什么不同?

UDP英文全称:User Datagram Protocol用户数据报协议

TCP英文全称:Transmission Control Protocol传输控制协议

两者协议的不同点:

(1)传输数据时,是否需要建立连接

  UDP:将数据源和目的封装成数据包中,不需要建立连接

  TCP:建立连接,形成传输数据的通道

(2)数据是否有限制大小

  UDP:每个数据报的大小限制在64k

  TCP:在连接中进行大数据量传输

(3)协议是否可靠

  UDP:因无连接,是不可靠协议

  TCP:通过三次握手完成连接,是可靠协议

(4)效率比较

  UDP:不需要建立连接,速度快

  TCP:在传输时,因为建立连接,效率会稍低

(5)适用的范围不同

  UDP:由于传输的效率快的特点。一般常用于:聊天工具,视频会议,桌面共享等等

  TCP:由于建立传输数据的通道,是可靠的连接。一般常用于:打电话,下载等等

(二)  域名解析

域名解析:先解析ip地址,再在DNS中查找对应的ip地址所对应的网站

友情提示:域名解析先解析的是本地地址,如果能查询到,就直接返回,查询不到,在到在网络上进行查找并解析

(三) Socket

1,含义:理解为是通讯的两端,数据在Socket之间进行传输

2,特点:

(1)            Socket就是为网络服务提供的一种机制。

(2)            通信的两端都有Socket

(3)            网络通信其实就是Socket间的通信。

(4)            数据在两个Socket间通过IO传输。

(四)UDP传输

1UDP传输发送端

思路:1,建立udpsocket服务。

         2,将要发送的数据封装到数据包中。

3,通过udpsocket服务将数据包发送出去(使用的是send方法)。

         4,关闭socket服务。

友情提示:

1DatagramPacket:表示数据报包

2DatagramSocket:表示用来发送和接收数据报包的套接字

2UDP传输接收端

思路:1,建立udp socket服务,因为是要接收数据,必须要明确一个端口号。

         2,创建数据包,用于存储接收到的数据。方便用数据包对象的方法解析这些数据

3,使用socket服务的receive方法将接收的数据存储到数据包中(该方法是阻塞式的,也就是没有接收到数据,就一直处于等待状态,直到接收到数据为止)

        4,通过数据包的方法解析数据包中的数据。

 5,关闭资源

友情提示:使用UDP协议,对于发送端与接收端,这两个随便先启动哪个都是可以的原因:UDP传输,简单的说:就是面向无连接,不可靠,数据快

3UDP协议聊天程序

思路:

发送端:

1,  将需要发送的数据,改成键盘录入:

BufferedReaderbufr = new BufferedReader(new InputStreamReader(System.in));    

接收端:

1, 将接收端使用while循环,也就是说:接收端一直处于接收状态,来一个数据就接收一次(注意:流不能关闭)。

这样一个简单的聊天室就已经创建好了。拓展:利用多线程编写聊天室。

(五)TCP传输

1TCP传输客户端

思路:

1,创建tcp客户端socket服务。使用的是Socket对象。

          建议该对象一创建就明确目的地。要连接的主机。

       2,如果连接建立成功,说明数据传输通道已建立。

          该通道就是socket ,是底层建立好的。既然是流,说明这里既有输入,又有输出。

          想要输入或者输出流对象,可以找Socket来获取。

          可以通过getOutputStream(),getInputStream()来获取两个字节流。

       3,使用输出流,将数据写出。

 4,关闭资源。

友情提示:socket流是底层建立好的,说明这里既有输入又有输出,想要输入或者输出流对象,可以找Socket来获取

2TCP传输服务端

思路:

 1,创建服务端socket服务。通过ServerSocket对象。

2,服务端必须对外提供一个端口,否则客户端无法连接。

3,获取连接过来的客户端对象。

 4,通过客户端对象获取socket流读取客户端发来的数据,并打印在控制台上。

 5,关闭资源。关客户端,关服务端。

3)练习:TCP协议文本转换客户端

思路:

        1,创建socket客户端对象。

        2,获取键盘录入。

        3,将录入的信息发送给socket输出流。

              //1,创建socket客户端对象。

              Sockets = new Socket("192.168.1.100",10004);//主机的ip地址和端口号

              //2,获取键盘录入。

              BufferedReaderbufr  =new BufferedReader(newInputStreamReader(System.in));

              //3,socket输出流。

              PrintWriterout = new PrintWriter(s.getOutputStream(),true); //true自动刷新

4)练习:TCP协议文本转换服务端

思路:

               1serversocket服务。

               2,获取socket对象。

               3,源:socket,读取客户端发过来的需要转换的数据。

               4,目的:显示在控制台上。

               5,将数据转成大写发给客户端。

          //1,创建一个服务端并明确其端口号

              ServerSocketss = new ServerSocket(10004);

              //2,获取socket对象。

              Socket s = ss.accept();

              //获取ip.

              Stringip = s.getInetAddress().getHostAddress();

              System.out.println(ip+"......connected");

              //3,获取socket读取流,并装饰。

  BufferedReaderbufIn=newBufferedReader(newInputStreamReader(s.getInputStream()));

              //4,获取socket的输出流,并装饰。

              PrintWriterout = new PrintWriter(s.getOutputStream(),true);

5)常见的客户端与服务端

1,常见的客户端:

       浏览器:IE

2,常见的服务端

服务器:Tomcat

友情提示:TCP/IPUDP是传输层的规则,http:是应用层的规则,ftp:网际层

6)客户端和服务器端工作的原理

GET / HTTP/1.1  请求行  请求方式 /myweb/1.html 请求的资源路径   http协议版本。

请求消息头 .属性名:属性值

Accept: image/gif, image/x-xbitmap,image/jpeg, image/pjpeg, application/x-shockwave-flash,

application/vnd.ms-excel,application/vnd.ms-powerpoint, application/msword, */*能解析各种应用程的的格式

Accept: */*    

Accept-Language: zh-cn,zu;q=0.5  解析的语言为中文

Accept-Encoding: gzip, deflate     对接收的数据进行压缩

User-Agent: Mozilla/4.0 (compatible; MSIE6.0; Windows NT 5.1; SV1; InfoPath.2) 使用的版本

Host: 192.168.1.100:9090   主机地址

Connection: Keep-Alive     保持数据连接

//空行

//请求体。

友情提示:需要注意的是:请求体与请求消息头它们之间的区分是用空格来区分的

7URL&URLConnection

URL:(Uniform Resource Locator)代表一个统一资源定位符,它是指向互联网资源的引用(资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询)

8)网络架构

1C/S  client/server

          特点:

                 该结构的软件,客户端和服务端都需要编写。

                 可发成本较高,维护较为麻烦。 

          好处:

                  客户端在本地可以分担一部分运算。

2B/S  browser/server

          特点:

                该结构的软件,只开发服务器端,不开发客户端,因为客户端直接由浏览器取代。

                开发成本相对低,维护更为简单。

          缺点:所有运算都要在服务端完成。

 

 

----------------------- android培训java培训java学习型技术博客、期待与您交流! ----------------------

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值