目录
网络编程
TCP编程
实例(发送文件)
UDP编程
理解
流 程:
发送端
接收端
网络编程
TCP编程
实例(发送文件)
java">public class Client {public static void main(String[] args) {// 在客户端输入一个文件try {FileInputStream inputStream = new FileInputStream("E:/A.png");Socket socket = new Socket("127.0.0.1",9999);OutputStream outputStream = socket.getOutputStream();byte[] bytes = new byte[1024];int length=0;while ((length=inputStream.read(bytes))!=-1 ){outputStream.write(bytes, 0,length);}socket.shutdownOutput();//发送文件时,需要调用,表示发送完成//接收服务器返回的消息DataInputStream dataInputStream = new DataInputStream(socket.getInputStream());System.out.println(dataInputStream.readUTF());} catch (FileNotFoundException e) {System.out.println("文件找不到");} catch (UnknownHostException e) {System.out.println("IP不正确");} catch (IOException e) {System.out.println("网络忙,请稍后再试");}}
}public class Sever {public static void main(String[] args) {try {ServerSocket sever = new ServerSocket(9999);System.out.println("服务器启动");Socket socket = sever.accept();System.out.println("客户端链接成功");FileOutputStream outputStream= new FileOutputStream("E:/a.png");InputStream inputStream = socket.getInputStream();byte []bytes = new byte[100];int length= 0;while ((length = inputStream.read(bytes))!=-1){outputStream.write(bytes,0,length);}DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());dataOutputStream.writeUTF("接收成功 ");} catch (IOException e) {System.out.println();}}
}
UDP编程
理解
- 类 DatagramSocket 和 DatagramPacket 实现了基于 UDP 协议网络程序。
- UDP数据报通过数据报套接字 DatagramSocket 发送和接收,系统不保证UDP 数据报一定能够安全送到目的地,也不能确定什么时候可以抵达。
- DatagramPacket 对象封装了UDP数据报,在数据报中包含了发送端的IP地址 和端口号以及接收端的IP地址和端口号。
- UDP协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方 的连接
流 程:
- DatagramSocket与DatagramPacket
- 建立发送端,接收端
- 建立数据报
- 调用Socket的发送、接收方法
- 关闭Socket
- 发送端与接收端是两个独立的运行程序
发送端
- DatagramSocket ds = new DatagramSocket();
- byte[] by = “hello,baidu.com”.getBytes();
- DatagramPacket dp = new DatagramPacket(by,0,by.length,InetAddress.getByName(“127.0.0.1”),10000);
- ds.send(dp);
- ds.close();
java">public class Send {public static void main(String[] args) {try {DatagramSocket datagramSocket = new DatagramSocket();byte []bytes="你好".getBytes();while (true) {//创建数据包对象DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("127.0.0.1"), 9999);datagramSocket.send(datagramPacket);}} catch (SocketException e) {System.out.println("404");e.getMessage();} catch (UnknownHostException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);}}
}
接收端
(要指定监听的端口)
- DatagramSocket ds = new DatagramSocket(10000);
- byte[] by = new byte[1024];
- DatagramPacket dp = new DatagramPacket(by,by.length);
- ds.receive(dp); String str = new String(dp.getData(),0,dp.getLength());
- System.out.println(str+"--"+dp.getAddress()); ds.close()
java">public class Receive {public static void main(String[] args) throws IOException {DatagramSocket datagramSocket = new DatagramSocket(9999);byte[] bytes = new byte[100];while (true){DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);datagramSocket.receive(datagramPacket);//接收数据到数据包String s = new String(bytes,0,datagramPacket.getLength());System.out.println(s);}}
}