------- <a target="blank">android培训</a>、<a target="blank">java培训</a>、期待与您交流! --------
package it.heima.mylog;
public class TCPAndUDP {
/*=========================================================
关键字:net包,网络模型-七层简述,IP地址,传输协议TCP,UDP
网络模型
1,物理层
主要定义物理设备标准,他的主要作用是传输比特流。这一层的数据叫做比特。
2,数据链路层
主要将从物理层接收的数据进行MAC地址的封装和解封装,常把这一层的数据叫做帧。
在这一层工作的设备室交换机。数据通过交换机来传输。
3,网络层
主要将从下层接收道德数据进行 IP 地址的封装和解封装。
在这一层工作的设备室路由器。常把这一层的数据叫做数据包。
4,传输层
定义了一些传输数据的协议和端口号。
TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据)。
例如:打电话,下载,等等需要相互连接的。
UDP(用户数据报协议,与TCP相反,用于传输可靠性要求不高,数据量小的数据)。
例如:对讲机,发QQ消息等等不需要相互握手的信息。
5,会话层
通过传输层(端口号:传输端口和接收端口)建立数据传输的通路。主要在系统之间发起会话相应。
6,表示层
主要进行对接收的数据进行解释,加密与解密,压缩与解压缩。
也就是把计算机能过识别的东西转换成人能过识别的东西。
7,应用层
主要是一些终端用用。
7应用层
6表示层
5会话层
4传输层
3网络层
2数据链路层
1物理层
网络通讯要素:IP地址,端口号,传输协议。
IP地址:InetAddress
端口号:用于表示进程的逻辑地址,不同的进程的标识。
有效端口:0-65535 其中0-1024为系统使用或保留。
传输协议:TCP,UDP
重点:
UDP
1,将数据及源和目的封装成数据包中,不需建立连接。
2,每个数据报的大小在限制64k内。
3,因无连接,是不可靠的,但速度快。
TCP
1,建立连接,形成传输数据的通道。
2,在连接通道中进行大量数据的传输。
3,通过三次(1:你在吗? 2:我在。 3:噢,我知道了。)握手完成连接,是可靠协议,但效率会稍低。
DNS服务器
1,任何网络的信息交流都是基于IP去定位的。DNS服务器就是存储着一些网站的主机名和IP,一一对应的。
2,当我们浏览网页时,就只需要输入主机名www.baidu.com,而不需要输入百度主机的IP了。应为IP不容易记。
3,浏览网页时,首先不是向DNS服务器去找相应的IP地址,而是会在本地host文件中查找,没有才会去DNS服务器查找。
所以可以在本地host文件中过滤一些垃圾广告网站。
白天复习内容:
1,用UDP协议模拟一个发送端和一个接收端。
2,将两个端整合成一个聊天程序。
3,熟悉net包方法。
location:本地
TCP:Transmission Control Protocol传输控制协议
UDP:User Datagram Protocol用户数据报协议
=======================================================================*/
/*====================================================================
关键词:UDP传输协议,TCP传输协议,Socket流
UDP协议练习
创建UDP发送端 Send
思路:
1,建立udp的socket服务。
2,将要发送的数据封装到数据包中。
3,通过udp的socket服务将数据包发送出去。
4,关闭socket服务。
udpsocket服务,使用DatagramSocket对象创建。
DatagramSocket ds = new DatagramSocket(8888);
键盘输入用System.in,将字节流转换成字符流,便于操作,修饰加强缓冲区
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
定义一个字符串用了存储读取的数据(一行)
String line = nul;
疯狂的读取
while((line = bufr.readLine()) != null){
byte[] buf = line.getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.255"),10000);
ds.send(dp);
输入886表示退出
if("886".equals(line))
break;
}
ds.close();
创建UDP接收端 Receive
思路:
1,建立udp socket服务,因为是要接受数据,必须明确一个端口。
2,创建一个接收数据包,用于存储收到的数据。方便数据包对象的方法解析这些数据。
3,使用socket服务的receive方法将接收道德数据存储在数据包中。
4,通过数据包的方法解析数据包的数据。
5,关闭资源。
要明确一个端口号
DatagramSocket ds = new DatagramSocket(10000);
疯狂的接收
while(true){
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//注意::阻塞式方法
ds.receive(dp);
通过数据包对象解析其中的数据,比如地址,端口,数据内容等
String ip = dp.getAddress().getHostAddress();
int port = dp.getPort();
String text = new String(dp.getData(),0,dp.length());
System.out.println(ip+":"+port+":"+text);
}
ds.close();
=============================================================
TCP协议练习
TCP传输,客户端建立过程 Client
思路
1,客户端发送数据到服务端
2,创建TCP客户端socket服务。使用的是Socket对象,一创建就明确目的地(要连接的主机)。
3,如果连接成功,说明数据传输通道已建立,该通道就是socket流,是底层建立好的
既然是流,说明这里既有输入又有输出。想要输入或输出流对象,都可以找socket来获取。
4,使用流输出,将数据写出,关闭资源。
Socket socket = new Socket("192.168.1.100",10001);
OutputStream out = sock.getOutputStream();
out.write("TCP演示".getBytes);
读取服务端返回的数据,使用socket读取流。
InputStream in = sock.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
将读取的数据转成字符串显示
String text = new String(buf,0,len);
System.out.println(text);
sock.close();
TCP传输,服务端建立过程 Server
思路:
1,创建服务端socket服务。通过SreverSocket对象创建。
2,服务端必须对外提供一个端口,否则客户无法连接。
3,获取连接过来的客户对象。
4,通过获取的客户端对象获取sock流读取客户端发来的数据,并显示。
5,关闭资源,关客户端,关服务端。
创建服务端对象
ServerSocket ss = new ServerSocket(10001);
获取连接过来的客户端对象
Socket s = ss.accept();
获取客户端IP
String ip = s.getAddress().getHostAdress();
通过socket对象获取输入流,要读取客户端发来的数据。
InputStream in = new s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
将读取的数据准成字符串
String text = new String(buf,0,len);
System.out.println(ip+":"+text);
使用客服端socket对象的输出流给客户端返回数据
OutputStream out = s.getOutputStream();
out.write("收到".getBytes());
关闭服务端客户端资源
s.close();
ss.close();
*/
}
------ <a target="blank">android培训</a>、<a target="blank">java培训</a>、期待与您交流! -------