2022年06月29日讲到了线程通讯 同学们
下面是网络编程
我们可以写一个类 自己给自己发信息
首先是一个发送端 SendClient
public class SendClient { public SendClient() throws Exception { // 创建 UDP 协议的 Socket 服务 DatagramSocket socket = new DatagramSocket(); // 封装要发送的数据 String mesg = "大家伙都吃饭了吗???"; byte[] data = mesg.getBytes(); // 要将数据发送到哪个 IP 这里写自己的IP地址 InetAddress address = InetAddress.getByName("192.168.74.30"); // 封装到数据包中 DatagramPacket packet = new DatagramPacket(data, data.length, address, 8000); // 开始发送 socket.send(packet); // 关闭服务 socket.close(); } public static void main(String[] args) throws Exception { new SendClient(); } }
然后是一个接收端 ReceiveClient
public class ReceiveClient { public ReceiveClient() throws Exception { // 创建接受端 Socket,并指定接收的端口号 DatagramSocket socket = new DatagramSocket(8000); // 创建用于存储接收到数据包的容器 byte[] data = new byte[1024]; // 创建用于接收对象 DatagramPacket packet = new DatagramPacket(data, data.length); // 开始接收 socket.receive(packet); // 接收完成后,通过数据包来解析数据 String ip = packet.getAddress().getHostAddress(); // 获取端口号 int port = packet.getPort(); // 数据信息 String mesg = new String(data, 0, packet.getLength()); System.out.println("IP 地址:" + ip + ",端口号:" + port + ",消息:" + mesg); // 关闭服务 socket.close(); } public static void main(String[] args) throws Exception { new ReceiveClient(); } }
然后我们先运行接收端 再运行发送端
就可以看到接收端显示道 :
我们再写一个发送图片的
public class ReceiveImage { // 这是图片接收端 public ReceiveImage() throws Exception { // 创建接受端 Socket,并指定接收的端口号 DatagramSocket socket = new DatagramSocket(8000); // 创建用于存储接收到数据包的容器 大小写图片的value值 byte[] data = new byte[37298]; // 创建用于接收对象 DatagramPacket packet = new DatagramPacket(data, data.length); // 开始接收 socket.receive(packet); // 接收完成后,通过数据包来解析数据 String ip = packet.getAddress().getHostAddress(); // 获取端口号 int port = packet.getPort(); // 这里写图片要放在什么地方 FileOutputStream output = new FileOutputStream("file./希尔达.jpg"); output.write(packet.getData()); output.close(); // 关闭服务 socket.close(); } public static void main(String[] args) throws Exception { new ReceiveImage(); } }
public class SendImage { // 这是图片发送端 public static void main(String[] args) throws Exception{ // 这里写图片放在哪里 File file=new File("C:\\Users\\llp\\Desktop\\希尔达.jpg"); int value=(int) file.length(); byte[] bytes=new byte[value]; InputStream input=new FileInputStream(file); int length=input.read(bytes); input.close(); // 发送端不需要端口号 DatagramSocket send=new DatagramSocket(); InetAddress address = InetAddress.getByName("192.168.74.30"); DatagramPacket packet=new DatagramPacket(bytes,value,address,8000); send.send(packet); send.close(); } }
同样是先启动接收端 再启动发送端
然后你就发现自己的文件夹里多了张图片