------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
黑马程序员_毕向东_Java基础视频教程第23天-01-网络编程(概述)
黑马程序员_毕向东_Java基础视频教程第23天-02-网络编程(概述2)
黑马程序员_毕向东_Java基础视频教程第23天-05-网络编程(TCP和UDP)
网络模型
OSI参考模型
TCP/IP参考模型
网络通讯要素
IP地址
端口号
传输协议
1找到对方IP
2数据要发送到对方指定的应用上,为了标识这些应用程序,所以给这些网络应用程序都用
数字进行标识.为了方便称呼这个数字.叫做端口(逻辑端口)
3定义通讯规则.这个通讯规则称为协议.
国际组织就定义了通用协议,TCP/IP. UDP/IP
最常见的是TCP UDP
127.0.0.1本地回环地址
端口0-1024系统保留了.
web服务器端口 8080
3306.
OSI参考模型.7层
传输层 TCP UDP 就是在这层.
网络层 ,IP地址的协议就在这层
物理层 网线,,无线就是物理层.
走完7层,就是数据分包.
传输到目标处,就开始数据拆包.
然后来又出现了 TCP/IP参考模型 只有4层
应用层 Http FTP也是应用层协议
传输层 TCP UDP
网际层 IP
主机至网络层
我们搞软件的是在网际层,和传输层,应用层.
网络通讯要素
IP地址 InetAddress
网络中设备的标识
不易记忆,可用主机名.
本地回环地址,127,0,0.1 主机名:localhost
端口号
用于标识进程的逻辑地址,不同进程的标识.
有效端口0-65535,其中0-1024系统使用或保留端口
传输协议.
通讯的协议.
常见协议TCP,UDP
UDP 他是面向无连接的.,我在发数据前,不需要建立连接
不管你在不在,我都发出去,你在,你就收的到,你不在,就丢掉.
UDP
将数据及源和目的封装成数据包中,不需要建立连接.
每个数据包的大小限制64K内.
因无连接,是不可靠协议.
不需要建立连接,速度快.
TCP
建立连接形成传输数据的通道.
在连接中进行大数据量传输.
通过三次握手完成连接,是可靠协议.
必须建立连接,效率较低.
UDP TCP这8句话背下来.
黑马程序员_毕向东_Java基础视频教程第23天-06-网络编程(Socket)
Socket 就是为网络服务提供的一种机制.
通信的两端都有Socket.
网络通信其实就是Socket间的通信
数据在两个Socket间通过IO传输.
黑马程序员_毕向东_Java基础视频教程第23天-07-网络编程(Udp-发送端)
黑马程序员_毕向东_Java基础视频教程第23天-08-网络编程(Udp-接收端)
import java.net.*;
/*
需求:通过udp传输方式,将一段文字数据发送出去.
定义了一个Udp发送端
思路:
1建立updsocket服务.
2,提供数据,并将数据封装到数据包中.
3.通过socket服务的发送功能,将数据包发出去.
4.关闭资源
*/
class UdpSend{
public static void main(String[] args) throws Exception{
//1创建UdP服务,通过DatagramSocket对象.
DatagramSocket ds=new DatagramSocket(8888);
//2,确定数据,并封装成数据包.
byte[] buf="udp ge men lai le ".getBytes();
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName
("127.0.0.1"),10000);
//3,通过socket服务,将已有的数据包发送出去,通过send方法.
ds.send(dp);
//4.关闭资源.
ds.close();
}
}
/*
需求:
定义一个应用程序,用于接收udp 协议传输的数据并处理的.
思路:
1,定义udpsocket服务.通常都会监听一个端口,其实就是给这个接收网络应用程序定义一个数字标识.
方便明确哪些数据过来,该应用程序可以处理.
2.定义一个数据包,因为要存储接收到的字节数据,
因为数据包对象中有更多功能可以提取字节数据中不同数据信息
3.通过Socket服务的receive方法将收到的数据存入已定义好的数据包中.
4.通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上.
5,关闭资源.
*/
class UdpRece{
public static void main(String[] args) throws Exception{
//1,创建udp socket建立端点.
DatagramSocket ds=new DatagramSocket(10000);
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,buf.length);
//3.通过服务的receive方法将收到的数据存入数据包中.
ds.receive(dp);
//4通过数据包的方法获取其中的数据.
String ip=dp.getAddress().getHostAddress();
String data=new String(dp.getData(),0,dp.getLength());
int pot =dp.getPort();
System.out.println(ip+"::"+data+"::"+pot);
//5关闭资源
ds.close();
}
}