赞
踩
在网络通信协议下,不同计算机上运行的程序,进行的数据传输。
C/S : 客户端/服务器
B/S : 浏览器/服务器
IP、端口号、协议
IP :设备在网络中的地址,是唯一的标识
端口号 :应用程序在设备中的唯一标识
协议 : 数据在网络中的传输规则,常见的协议有 UDP ,TCP , http 等
要求:
Send代码块:
public class Send { public static void main(String[] args) throws IOException { // 1.创建DatagramSocket发送对象 DatagramSocket ds = new DatagramSocket(); // 2.打包数据 Scanner sc = new Scanner(System.in); while (true) { System.out.println("please input your message"); String str = sc.nextLine(); if("886".equals(str)){ break; } byte[] bytes = str.getBytes(); InetAddress address = InetAddress.getByName("127.0.0.1"); int port = 10086; DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port); // 3.发送数据 ds.send(dp); } // 4.释放资源 ds.close(); } }
Receive代码块:
public class Receive { public static void main(String[] args) throws IOException { // 1. 创建 DatagramSocket 对象 DatagramSocket ds = new DatagramSocket(10086); // 2. 接受数据包 byte[] bytes = new byte[1024]; DatagramPacket dp = new DatagramPacket(bytes, bytes.length); while (true) { ds.receive(dp); // 3. 解析数据包 byte[] data = dp.getData(); int len = dp.getLength(); String ip = dp.getAddress().getHostName(); String name = dp.getAddress().getHostAddress(); System.out.println("ip 为 :" + ip + "主机名为 : " + name + "的人发送了数据 :" + new String(data, 0, len)); } } }
注意
DatagramSocket
类用于创建用于发送和接收数据报(datagram
)的套接字(socket
)。DatagramSocket
类提供了发送和接收数据报的机制。DatagramPacket
类表示数据报包,它是一个容器,用于保存要发送或接收的数据。数据报包包括数据、目的地址和端口号。TCP通信协议是一种可靠的网络协议,它在通信两端各建立一个Socket对象,通信之前要确保连接已经建立,通过Socket 产生 IO 流 来进行网络通信
Socket(String host, int port)
OutputStream getOutputStream()
ServerSocket(int port)
Socket accept()
InputStream getInputStream()
void close()
服务器端(Server):
public class Server { public static void main(String[] args) throws IOException { // TCP 协议 : 接受对象 // 1. 创建对象 ServerSocket ServerSocket ss = new ServerSocket(50000); // 2. 监听客户端的连接 Socket socket = ss.accept(); // 3. 从连接通道中获取输入流读取数据 InputStream is = socket.getInputStream(); // 字节流转化为字符流 InputStreamReader isr = new InputStreamReader(is); // 字符流转化为缓冲流 BufferedReader br = new BufferedReader(isr); int b; while ((b = br.read()) != -1){ System.out.println((char)b); } // 4. 释放资源 socket.close(); ss.close(); } }
客户端(Client) :
public class Client { public static void main(String[] args) throws IOException { // TCP 协议 :发送数据 // 1. 创建 Socket 对象 // 细节:在创建对象的同时会连接服务器,如果连不上,则会报错 Socket socket = new Socket("127.0.0.1",50000); // 2. 可以从连接通道中获取输出流 OutputStream os = socket.getOutputStream(); // 写出数据 os.write("你好你好".getBytes()); // 3. 释放资源 os.close(); socket.close(); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。