网络即将不同区域的电脑连接到一起, 组成局域网、城 域网或广域网。把分布在不同地理区域的计算机与专门 的外部设备用通信线路互连成一个规模大、功能强的网 络系统,从而使众多的计算机可以方便地互相传递信 息,共享硬件、软件、数据信息等资源。
定义网络上的节点的一串字符,节点比如手机、电脑、ipad、服务器、交换机、路由器等。
IP地址目前有两类:ipv4(大量使用)和ipv6
本机ip:127.0.0.1
本机域名:localhost ,通过DNS转换出来的
非注册ip:192.168.0.0~192.168.255.255 (供组织内部使用的私有ip)。
虚拟概念,每台计算机上都有多个端口,每个端口对应一个软件,因此,端口多用于区分不同的软件。
端口0~65535 (2字节)
注意:同一协议下端口号不能冲突
建议使用8000以上的端口号,8000以内的为预留端口号
常见端口号:
80 http8080 tomcat3306 mysql1521 oracle跟据IP+端口+文件路径来找到对应的文件资源。
示例:https://www.baidu.com:80/index.html?nn=123#a
使用到的类:
java.net.InetAddress 查看IP地址及有关信息java.net.URL 代表统一资源定位符java.net.InetSocketAddress IP套接字地址(IP地址+端口号)java.net.DatagramSocket 建立连接用的java.net.DatagramPacket 用于发送和接收数据的Java.net.Socket Tcp中建立客户端的java.nett.ServerSocket Tcp中建立服务端的基本原理
步骤a:构建 URL url = new URL(地址);
步骤b: 使用openStream() 打开流
BufferedReader rd = new BufferedReader(new InputStreamReader(url.openStream()))
步骤c: 读取流中的数据
String msg =null;
while((msg=rd.readLine())!=null){
System.out.println(msg);
}
步骤d: 关闭流
rd.close();
网络编程的另一个名称,面向socket编程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZetzVkzT-1603282472413)(C:\Users\longquan\AppData\Local\Temp\1603280550159.png)]
socket就像一个口子,让传输层和应用层可以进行信息交流的口子
DatagramSocket: 定义发送端
DatagramPacket: 打包
定义发送端
DatagramSocket datags = new DatagramSocket(参数);
准备数据
打包
DatagramPacket packet = new DatagramPacket(参数);
发送
datdgs.send(packet);
关闭
datdgs.close();
定义接收端
DatagramSocket datags = new DatagramSocket(9090);//接收端
准备包裹接收数据
byte[] b = new byte[1024]; DatagramPacket dp = new DatagramPacket(b,b.length);
接收
datags.receive(dp);
处理数据
关闭
datags.close();
注意:先运行接收端后发送端
基于IO
定义我是客户端
Socket client = new Socket(“localhost”,9999);
获取输出流 client.getOutputStream()
DataOutputStream os = new DataOutputStream(new BufferedOutputStream(client.getOutputStream()));
写出字符串
os.writeUTF(“字符串”);
刷出
os.flush( ) ;
关闭
os.close( );
client.close();
定义我是服务端
ServerSocket server = new ServerSocket(9999);
阻塞式监听
Socket client = server.accept();
获取输入流
DataInputStream is = new DataInputStream(new BufferedInputStream(client.getInputStream()));
读入数据
is.readUTF( );
关闭
server.close();//服务器端一般不会轻易关闭
server = new ServerSocket(9999);
阻塞式监听
Socket client = server.accept();
获取输入流
DataInputStream is = new DataInputStream(new BufferedInputStream(client.getInputStream()));
读入数据
is.readUTF( );
关闭
server.close();//服务器端一般不会轻易关闭
这里代码比较简单就不进行展示了,可以根据每一步中的提示自行编写就能写出来。