网络:将不同区域的计算机链接到一起 局域网、城域网、互联网
IP地址:网络中的每个设备都会有一个唯一的数字标识 就是IP地址;一个IP地址可以对应多个域名,一个域名只能对应一个IP地址
端口:用于区分计算机上的软件 占2个字节 在0-65535之间 同一个网络协议端口号不能相同 1024以下的端口号是预留给服务商的最好不要使用
URI(uniform resource identifier):统一资源标识符,用来唯一的标识一个资源,是一个抽象的概念。http://主机名:8080/Token/index.do,
getRequestURI 返回的是一个String 类型的字符串(/Token/index.do)返回一个相对路径。
URL(uniform resource locator):URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。
getRequestURL 返回一个StringBuffer类型(http://主机名:8080/Token/index.do)是一个绝对路径。
URL=协议+存放资源的主机域名+端口+资源文件
数据传输的协议
TCP协议:先建立链接 再进行数据传输 安全 效率低 面向链接;确保接收方完全正确地获取发送方所发送的全部数据;
TCP没有数据大小方面的限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大量的数据。
UDP协议:相互通信时无需建立链接 效率高 ; 发送方所发送的数据报并不一定以相同的次序到达接收方;
UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。
数据传输: 先封装 后拆装
一、网络编程
1、UDP
客户端:
a、创建客户端 DatagramSocket
b、准备数据 字节数组
c、打包 DatagramPacket +服务器地址+端口
d、发送
e、关闭资源
服务器:
a、创建服务器 DatagramSocket
b、准备接收容器 字节数组 封装DatagramPacket
c、封装成包 接受数据
d、分析 数据
e、关闭资源
public class ServerTest { public static void main(String[] args) throws IOException { //1.创建服务器+端口 DatagramSocket server=new DatagramSocket(8888); //2.准备接收容器 byte []container=new byte[1024]; //3、封装成包 DatagramPacket DatagramPacket packet=new DatagramPacket(container, container.length); //4、接收数据 server.receive(packet); //5、分析数据 byte [] data=packet.getData(); int len =packet.getLength(); System.out.println(new String(data,0,len)); //6、释放资源 server.close(); } } public class ClientTest { public static void main(String[] args) throws IOException { //1.创建客服端+端口 DatagramSocket client=new DatagramSocket(6666); //2、准备数据 String msg="UDP编程 ======》 我是客户端"; byte[]data=msg.getBytes(); //3、打包数据 发送给指定地点+端口 DatagramPacket packet=new DatagramPacket(data, data.length,new InetSocketAddress("localhost",8888)); //4、发送 client.send(packet); //释放资源 client.close(); } }
2、TCP
public class TCPServer { public static void main(String[] args) throws IOException { //创建服务器 指定端口 ServerSocket server=new ServerSocket(8888); //接收客户端链接 阻塞式 Socket socket=server.accept(); System.out.println("一个客户端建立链接"); //发送数据+接收数据 String msg="欢迎使用"; //输出流 BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); bw.write(msg); bw.newLine();//行结束符 bw.flush(); } //输出 一个客户端建立链接 public class TCPClient { public static void main(String[] args) throws UnknownHostException, IOException { //指定服务器+端口 Socket client=new Socket("localhost",8888); //接收数据 BufferedReader bd=new BufferedReader(new InputStreamReader(client.getInputStream())); String echo=bd.readLine(); System.out.println(echo); bd.close(); } } //输出 欢迎使用