# 史上最全讲解: JAVA中的网络编程
史上最全讲解: JAVA中的网络编程
文章目录
网络编程简介
IP 端口 url
协议: 交流的方式
资源传输层协议: udp tcp
IP: 定义网络上的节点(手机,电脑,路由器…)
ipv4 32位 ipv6 64位
特殊的IP
组织内部IP,非注册IP:192.168.0.0~192.168.255.255
ip与域名之间的关系:
DNS 服务器
java提供了一个类: InetAddress
端口: 区分不同的软件 ,2个字节 0~65535
java提供的类:InetSocketAddress(String hostname, int port)
同一协议下端口不能冲突
预留端口号:
80 :http
8080 :tomcat
1532 :oracle
3306 :mysql
InetSocketAddress 端口
URL: 统一资源定位符
java中存在URL类:http://www.baidu.com:80/index.html
面向Socket编程,
tcp和udp不一样
udp: 非面向连接的 协议简单,开销小,效率高 不安全 一般不超过60k 基于字节数组tcp: 面向连接的 效率低 安全基于3次握手 1:发送请求 2.回应 3.发送数据 基于io流
- DatagramSocket
- DatagramPacket
UDP(User Datagram Protocol)
udp实现发送端:
1.使用 DatagramSocket(int port) 定义发送端
2.准备数据
3.数据打包 DatagramPacket(byte[] buf, int offset, int length, SocketAddress address)
4.发送数据 void send(DatagramPacket p) 从此套接字发送数据报包。
5.资源关闭
udp实现接收端:
1.定义接收端new DatagramSocket(6666);
2.准备包裹,接收数据
3.接收
4.关闭
package com.shsxt.sendreceive03; import java.io.FileInputStream; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; public class Send01 { public static void main(String[] args) throws IOException { //System.out.println("发射端"); //1.使用DatagramSocket定义发送端DatagramSocket(int port)既可以发也可以收 DatagramSocket send = new DatagramSocket(8888); //2.准备数据 FileInputStream fis = new FileInputStream("D:\\A\\a.txt"); byte[] by = new byte[1024*60]; String str = null; int len = -1; while((len=fis.read(by))!=-1){ str=new String(by,0,len); } fis.close();//fis输入流关闭 //System.out.println(str); // fis.read();. byte[] arr = str.getBytes(); //3.打包DatagramPacket(byte[],0,len) //DatagramPacket(byte[] buf, int length, InetAddress address, int port) DatagramPacket data = new DatagramPacket(arr,0,arr.length,new InetSocketAddress("192.168.8.125",9999)); //4.发送数据 send.send(data); //5.关闭 send.close(); } }
package com.shsxt.sendreceive03; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; public class receive02 { public static void main(String[] args) throws IOException { //System.out.println("接收端"); //1.定义接收端 DatagramSocket receive = new DatagramSocket(9999); //2.准备包裹,接收数据 byte[] car = new byte[1024*60]; DatagramPacket packet = new DatagramPacket(car,car.length); //3.接收 receive.receive(packet); //处理数据 byte[] arr = packet.getData(); int len = packet.getLength(); System.out.println(new String(arr,0,len)); //4.关闭 receive.close(); } }
TCP
tcp实现客户端:
1.定义客户端 Socket(InetAddress address, int port) ip和端口是要访问的服务器端的ip+端口
2.准备数据
3.基于io操作发送
4.关闭
tcp实现基本流程:服务器
1.定义服务器端 ServerSocket(int port)
2.阻塞式监听 Socket accept()
3.io操作
4.关闭
package com.shsxt.tcp; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; public class TCPClient03 { public static void main(String[] args) throws UnknownHostException, IOException { System.out.println("----------我是客户端---------"); //1.定义客户端 Socket client= new Socket("localhost",9999); //2.准备数据 FileInputStream fis = new FileInputStream("D:\\A\\a.txt"); byte[] car = new byte[1024*60]; int len = fis.read(car); String str = new String(car,0,len); //3.基于io操作 DataOutputStream os=new DataOutputStream(client.getOutputStream()); os.writeUTF(str); //4.关闭 fis.close(); os.flush(); os.close(); client.close(); } }
package com.shsxt.tcp; import java.io.DataInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; public class TCPServer04 { public static void main(String[] args) throws IOException { System.out.println("------服务端-------"); //1.定义服务器端 ServerSocket server=new ServerSocket(9999); //2.阻塞式监听 Socket client=server.accept(); System.out.println("------一个客户端连接成功了---------"); //3.io DataInputStream is=new DataInputStream(client.getInputStream()); String str=is.readUTF(); byte[] car = str.getBytes(); FileOutputStream fos = new FileOutputStream("D:\\A\\aa.txt"); //int len = is.read(car);不能重复读文件 System.out.println(car.length); fos.write(car,0,car.length); System.out.println(str); //4.关闭 fos.close(); is.close(); server.close(); } }
- 点赞 1
- 收藏
- 分享
- 文章举报
- java网络编程之UDP讲解
- java网络编程服务端,客户端讲解
- 第九节:详细讲解Java中的泛型,多线程,网络编程
- Java的网络功能与编程 3
- Java的网络功能与编程
- JAVA编程思想:第15章 网络编程
- Java网络服务器编程
- java网络编程之HTTP服务器的实现
- Java的网络编程(TCP/IP)
- JAVA语言的网络功能与编程
- 史上最全讲解:JAVA中的反射
- Java 高层网络编程
- Java网络编程,有助于解决实际问题,
- Java网络编程基础 ServerSocket类使用
- Java网络编程基础 InetAddress类的使用
- Java网络服务器编程
- JAVA语言的网络功能与编程
- java的网络功能与编程
- java网络编程1
- Java的网络功能与编程 一