网络概述:
- 多台相互连接的计算机
- 资源共享
3.交换数据
网络的类型分类
按拓扑分类:星型结构 树型结构 总线型线程 环形结构 网状架构
按范围分类:局域网LAN 城域网MAN 广域网WAN 补充:个人局域网PAN 互联网Internet
按传输方式分类 :有线网络 无线网络
网络体系结构:
OSI参考模型:物理层 数据链路层 网络层 传输层 会话层 表示层 引用层
TCP/IP参考模型: 网络接口层 网际层 传输层 引用层
网络通信协议概述:
在网络中,多台计算机如果希望进行通信/数据传递 必须遵循某种规约,如果不遵循,则无法进行资源共享或是数据的传递。
网络通信协议种类:
TCP协议(Transmission Control Protocol 传输控制协议)特点:面向连接,数据稳定/安全
UDP协议(User Datagram Protocol 用户数据报协议)特点:无连接,数据不可靠/不安全
Socket简介:
Socket:套接字(通信链路的节点/端点)
Socket:提供给应用程序的接口
Socket的路径:java . net包路径
java网络编程的三要素
Ip地址:设备在网络中的唯一标识
端口号:应用程序在设备中的唯一标识
协议:信息在网络传递的过程中必须遵守的规约,例如UDP,TCP协议
基于UDP协议的Socket编程-发送数据
public class Demo {
public static void main(String[] args) throws IOException {
//实例化DaragramSocket对象
DatagramSocket datagramSocket = new DatagramSocket();
//封装需要传递的数据(以字节数组的形式传递)
String str="my lover";
//将字符串转换为字节数组;
byte[]bytes=str.getBytes();
//127.0.0.1代表发送到的目标地址{本机地址}
InetAddress byName = InetAddress.getByName("127.0.0.1");
//10086为端口号
int port=10086;
//将数组中所有要传递的数据bytes数组,以及ip地址address,端口号port打包封装到DatagramPacket构造器中
DatagramPacket datagramPacket= new DatagramPacket(bytes, bytes.length, byName, 10086);
//发送这个打包的数据
datagramSocket.send(datagramPacket);//(send发送包)
//释放资源
datagramSocket.close();
}
}
基于UDP协议的Socket编程-接受数据
public class Test1 {
public static void main(String[] args) throws IOException {
//实例化 DatagramSocket对象,指定端口号10086
DatagramSocket datagramSocket = new DatagramSocket(10086);
//封装数据
byte[]bytes=new byte[1024];
DatagramPacket datagramPacket = new DatagramPacket(bytes,bytes.length);
datagramSocket.receive(datagramPacket);//( datagramSocket发送,receive接收包datagramPacket打包)
byte[]data=datagramPacket.getData();//(解包)
int length=datagramPacket.getLength();//(解包)
//输出获取的数据
System.out.println("接收到数据"+new String(data,0,length));
//释放资源
datagramSocket.close();
}
}
基于TCP协议的Socket编程-发送数据
public class Tcpfa {
public static void main(String[] args) throws IOException {
//实例化Socket对象
Socket socket = new Socket("127.0.0.1",10001);
//以流的形式写出
OutputStream outputStream = socket.getOutputStream();
outputStream.write("我".getBytes());
//释放资源
outputStream.close();
socket.close();
}
}
基于TCP协议的Socket编程接收数据
public class Tcp {
public static void main(String[] args) throws IOException {
//实例化 ServerSocket对象
ServerSocket serverSocket = new ServerSocket(10001);
//获取服务器的链接
Socket socket = serverSocket.accept();
//以流的形式读取数据
InputStream is=socket.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(is);
int b=0;
while((b=inputStreamReader.read())!=-1){
System.out.println((char)b);
}
//释放资源
is.close();
serverSocket.close();
}
}