目录
一、C/S 与B/S软件架构
-
C/S 客户端与服务端
-
需要开发客户端和服务端程序,用户需要安装下载客户端程序
-
对网络带宽要求相对低
-
相对安全
-
-
B/S 浏览器与服务端
-
只需开发服务端程序,用户无需下载客户端,只需要有浏览器即可访问服务端
-
对网络带宽要求相对高
-
安全性相对低
-
二、TCP与UDP协议
-
UDP协议(发短信)
-
非面向连接
-
数据不可靠
-
发送的数据量有限
-
效率高
-
-
TCP协议(打电话)
-
面向连接
-
数据可靠
-
理论发送的数据量无限制
-
效率相对低
-
三次握手
-
四次挥手
-
-
三、网络编程三要素
-
协议
-
ip地址:用于唯一标识网络中的一台计算机,比如192.168.1.100
-
端口:0~65535范围的整数,用于标识计算机中运行的一个网络程序。
ip地址+端口用于唯一标识一个网络中的进程。
四、网络编程
-
TCP编程
🚀客户端程序
//创建Socket对象 Socket socket = new Socket("192.168.42.34", 12345); //通过Socket获取输出流 OutputStream os = socket.getOutputStream(); //写出数据 os.write("hello TCP123".getBytes()); //释放资源 os.close(); socket.close();
🚀服务端程序
//创建ServerSocket ServerSocket ss = new ServerSocket(12345); //接收一个Socket Socket s = ss.accept();//阻塞方法 //获取输入流 InputStream is = s.getInputStream(); byte[] bys = new byte[1024]; int len = is.read(bys);//读取数据到数组 //输出数据到控制台 System.out.println("---" + new String(bys, 0, len)); //释放资源 is.close(); s.close(); ss.close();
-
UDP编程
🚀发送端程序
//创建Socket DatagramSocket ds = new DatagramSocket(); //创建数据包裹 byte[] bytes = "hello UDP".getBytes(); InetAddress ip = InetAddress.getByName("192.168.42.34"); DatagramPacket dp = new DatagramPacket(bytes, bytes.length, ip, 12306); //发生数据包 ds.send(dp); //释放资源 ds.close();
🚀接收端程序
//创建Socket DatagramSocket ds = new DatagramSocket(12306); //创建一个空数据包裹 byte[] bys = new byte[1024]; DatagramPacket dp = new DatagramPacket(bys,bys.length); //接收数据到包裹中 ds.receive(dp); //解析包裹中的数据 byte[] data = dp.getData(); InetAddress address = dp.getAddress(); String ip = address.getHostAddress(); int length = dp.getLength(); //输出数据到控制台 System.out.println(ip+"--"+new String(data,0,length)); //释放资源 ds.close();