Java:网络编程
什么是网络编程?
在网络通信协议下,不同计算机上运行的程序,进行的数据传输。
2.常见软件架构有哪些?
CS/BS
3.通信的软件架构CS\BS的各有什么区别和优缺点心
CS:客户端服务端模式需要开发客户端BS:浏览器服务端模式不需要开发客户端。CS:适合定制专业化的办公类软件如:IDEA、
网游
BS:适合移动互联网应用,可以在任何地方随时访问的系统。
网络编程的三要素:IP,端口号,协议
IP
IPv4的地址分类形式
公网地址(万维网使用)和私有地址(局域网使用)。
192.168.开头的就是私有址址,范围即为192.168.0.0--192.168.255.255,专门为组织机构内部使用,以此节省IP
特殊IP地址
127.0.0.1,也可以是localhost:是回送地址,也称为本地回环地址,也称本机IP,永远只会寻找当前所在本机。通过此地址发送的信息在通过网卡的时候就会传回到本机
可以通过一下CMD命令来查看本机网络
用来表示IP的类:InetAddress
是用InetAddress的静态方法来创建对象。
getByName的参数可以是你自己的主机名,或IP地址
端口号
应用程序在设备中唯一的标识。
端口号:由两个字节表示的整数,取值范围:0~65535
其中0~1023之间的端口号用来一些知名的网络服务或者应用。
一个端口号只能由一个应用程序使用
传输信息的时候需要端口号对应哦
协议
计算机网络中,连接和通信的规则被称为网络协议
·OSI参考模型:世界互联网协议标准,全球通信规范,单模型过于理想化,未能在因特网上进行广范推广
·TCP/IP 参考模型(或TCP/IP协议):事实上的国际表准。
UDP协议
·用户数据报协议(User Datagram Protocol)
·UDP是面向无连接通信协议(不去检查两个端口连接是否成功,就直接发送数据)。速度快,有大小限制一次最多发送64K,数据不安全,易丢失数据
代码实现:
单播
发送数据
用DatagrameSocket ds = new DatagramSocket();创建一个对象用来运输要打包好的数据,端口参数如果没写就会用任意的空的端口
再用DatagramPacket dp来打包数据,其中发送的的是字节数组,且必须指定发送到哪个端口
用ds.send(dp);来将数据发送出去
再用ds.close();释放资源
接受数据
先创建一个DatagramSocket对象来用来接受打包好的数据,其中必须要指定端口,要接受哪个端口发过来的数据
再创建一个DatagramPacket对象,调用ds.receive(dp);来将接受到的数据写入包中,如果ds.receive(dp)没有接受到数据就会阻塞在这里,直到接受到数据
用dp.getData()来获取包中的数据,同样得到的是字节数组
再进行解析
组播
同时个一个组内的电脑发送数据
发送数据,
与单播不同的是,创建用来运输数据的对象不同,改为MulticastSocket类型,发送的地址改为224.0.0.1~224.0.0.225中的一个
接受数据
与单播不同的是,创建用来运输数据的对象不同,改为MulticastSocket类型,但是要将当前的本机添加到224.0.0.1组中,才能这个组中接受发送的数据。
广播
给局域网中的所有设备发送数据
发送数据
只需要将发送的地址改为255.255.255.255
接受数据
和单播一样
TCP协议
·传输控制协议TCP(Transmission Control Protocol)
·TCP协议是面回连接的通信协议。速度慢,没有大小限制,数据安全。
TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象
通信之前要保证连接已经建立
通过Socket产生IO流来进行网络通信
使用:
发送数据
流是建立再Socket里面会随着通道的关闭而关闭,所以可以手动关,也可以只关闭Socket
接收端
is.read();需要接收到发送端的结束标志才会返回-1,并结束,这个结束标志可以是发送短端的socket.close(),结束连接,也可以是在发送端调用socket.shutdownOutput();