无连接通信 UDP
客户端
- package com.swift.test;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- import java.util.Scanner;
- /* 使用 UDP 通信编写一个 Java 程序. 要求: 获取键盘输入的内容. 发送到服务端. 服务端接收后. 在控制台上打印接收到的内容
- 客戶端
- 1. 创建键盘录入对象. 获取键盘录入数据
- 2. 创建 DatagramSocket 对象
- 3. 创建 DatagramPacket 对象. 并封装键盘录入的数据
- 4. 发送数据
- 5. 释放流资源
- 服務端
- 1. 创建 DatagramSocket 对象
- 2. 创建 DatagramPacket 对象
- 3. 接收数据存储到 DatagramPacket 对象中
- 4. 获取 DatagramPacket 对象的内容
- 5. 在控制台上打印接收到的内容
- 6. 释放流资源
- */
- public class DemoUDPClient {
- public static void main(String[] args) throws IOException {
- Scanner scan = new Scanner(System. in );
- System.out.println("请输入要传达的内容:");
- String str = scan.nextLine();
- DatagramSocket datagramSocket = new DatagramSocket();
- byte[] buf = str.getBytes();
- DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.105.22"), 6464);
- datagramSocket.send(datagramPacket);
- datagramSocket.close();
- }
- }
服务端
- package com.swift.test;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- /* 使用 UDP 通信编写一个 Java 程序. 要求: 获取键盘输入的内容. 发送到服务端. 服务端接收后. 在控制台上打印接收到的内容
- 客戶端
- 1. 创建键盘录入对象. 获取键盘录入数据
- 2. 创建 DatagramSocket 对象
- 3. 创建 DatagramPacket 对象. 并封装键盘录入的数据
- 4. 发送数据
- 5. 释放流资源
- 服務端
- 1. 创建 DatagramSocket 对象
- 2. 创建 DatagramPacket 对象
- 3. 接收数据存储到 DatagramPacket 对象中
- 4. 获取 DatagramPacket 对象的内容
- 5. 在控制台上打印接收到的内容
- 6. 释放流资源
- */
- public class DemoUDPServer {
- public static void main(String[] args) throws IOException {
- DatagramSocket datagramSocket=new DatagramSocket(6464);
- InetAddress ip=InetAddress.getLocalHost();
- String ipString=ip.getHostAddress();
- String nameString=ip.getHostName();
- System.out.println(ipString+" "+nameString);
- byte[] buf=new byte[1024];
- DatagramPacket datagramPacket=new DatagramPacket(buf,1024);
- datagramSocket.receive(datagramPacket);
- System.out.println(new String(buf));
- datagramSocket.close();
- }
- }
结果
有连接通信 TCP
客户端
- package com.swift.test;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.InetAddress;
- import java.net.Socket;
- /* 使用 socket 编写一个 Java 程序, 要求: 客户端发送内容我是客户端到服务端, 服务端接收后, 在控制台上打印接收到的内容, 并返回内容我来自服务端到客户端, 客户端接收服务端的发送的内容后将接收内容打印在控制台
- ? 客户端
- 1. 创建客户端的 Socket 对象
- 2. 获取 Socket 的输出流对象
- 3. 写数据给服务器
- 4. 获取 Socket 的输入流对象
- 5. 使用输入流, 读反馈信息
- 6. 关闭流资源
- */
- public class DemoTCPClient {
- public static void main(String[] args) throws IOException {
- Socket s=new Socket(InetAddress.getByName("10.254.3.116"),8888);
- OutputStream out=s.getOutputStream();
- byte[] buf="我是客户端".getBytes();
- out.write(buf);
- InputStream in=s.getInputStream();
- byte[] bytes=new byte[128];
- in.read(bytes);
- System.out.println(new String(bytes));
- s.close();
- }
- }
服务端
- package com.swift.test;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.InetAddress;
- import java.net.ServerSocket;
- import java.net.Socket;
- /* 使用 socket 编写一个 Java 程序, 要求: 客户端发送内容我是客户端到服务端, 服务端接收后, 在控制台上打印接收到的内容, 并返回内容我来自服务端到客户端, 客户端接收服务端的发送的内容后将接收内容打印在控制台
- ? 服务器端
- 1. 创建服务器端 ServerSocket 对象, 指定服务器端端口号
- 2. 开启服务器, 等待着客户端 Socket 对象的连接, 如有客户端连接, 返回客户端的 Socket 对象
- 3. 通过客户端的 Socket 对象, 获取客户端的输入流, 为了实现获取客户端发来的数据
- 4. 通过客户端的输入流, 获取流中的数据
- 5. 通过客户端的 Socket 对象, 获取客户端的输出流, 为了实现给客户端反馈信息
- 6. 通过客户端的输出流, 写数据到流中
- 7. 关闭流资源 */
- public class DemoTCPServer {
- public static void main(String[] args) throws IOException {
- ServerSocket serverSocket=new ServerSocket(8888);
- InetAddress ip=InetAddress.getLocalHost();
- System.out.println(ip.getHostAddress());
- Socket s=serverSocket.accept();
- InputStream in=s.getInputStream();
- byte[] buf=new byte[128];
- in.read(buf);
- System.out.println(new String(buf));
- OutputStream out=s.getOutputStream();
- out.write("我来自服务端".getBytes());
- serverSocket.close();
- s.close();
- }
- }
来源: http://www.bubuko.com/infodetail-2521979.html