J029_UDP通信

server/2024/9/24 6:19:51/

一、需求描述

实现UDP的通信

1.1 一发一收

1.1.1 ClientTest1

package com.itheima.udp;import java.net.*;import static java.net.InetAddress.*;//完成udp通信快速入门,实现一收一发
public class ClientTest1 {public static void main(String[] args) throws Exception {//创建客户端对象DatagramSocket socket = new DatagramSocket();//创建数据包对象封装要发出去的数据byte[] bytes = "我是快乐的客户端,我负责发送数据".getBytes();//4个参数代表://1、要发送的数据//2、要发送的数据大小(字节数)//3、服务端的IP//4、服务端程序的端口号DatagramPacket packet = new DatagramPacket(bytes,bytes.length, getLocalHost(),6666);//开始发送数据包的数据出去socket.send(packet);System.out.println("客户端数据发送完毕!!!");//发送后关闭通信管道socket.close();}
}

1.1.2 ServerTest1

package com.itheima.udp;import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;public class ServerTest1  {public static void main(String[] args) throws Exception {System.out.println("-----服务端启动----------");//创建一个服务端对象,用来接收数据。需要注册端口DatagramSocket socket = new DatagramSocket(6666);//创建一个数据包对象,用于接收数据byte[] buffer = new byte[1024 * 64];DatagramPacket packet = new DatagramPacket(buffer,buffer.length);//开始接受数据socket.receive(packet);//获取本次数据包接收了多少数据int len = packet.getLength();String res = new String(buffer,0,len);System.out.println(res);//获取客户端的IP地址和端口号System.out.println(packet.getAddress().getHostAddress());System.out.println(packet.getPort());//释放资源socket.close();}
}

1.1.3 运行结果

 

1.2 多发多收

1.2.1 Client

package com.itheima.udp2;import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.Scanner;public class Client {public static void main(String[] args) throws Exception {//创建客户端对象DatagramSocket socket = new DatagramSocket();Scanner sc = new Scanner(System.in);while (true){//让用户输入要发送的消息System.out.println("请说:");String msg = sc.nextLine();//输入exit时退出if ("exit".equals(msg)) {System.out.println("欢迎下次光临!退出成功!!!");//关闭通道socket.close();break;}byte[] bytes = msg.getBytes();//创建发送数据的数据包DatagramPacket packet = new DatagramPacket(bytes,bytes.length,InetAddress.getLocalHost(),6666);//开始发送数据socket.send(packet);}//客户端数据发送完毕System.out.println("客户端数据发送完毕");}
}

1.2.2 Server

package com.itheima.udp2;import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;public class Server  {public static void main(String[] args) throws Exception {System.out.println("-----服务端启动----------");//创建一个服务端对象,用来接收数据。需要注册端口DatagramSocket socket = new DatagramSocket(6666);//创建一个数据包对象,用于接收数据byte[] buffer = new byte[1024 * 64];DatagramPacket packet = new DatagramPacket(buffer,buffer.length);while (true) {//开始接受数据socket.receive(packet);//获取本次数据包接收了多少数据int len = packet.getLength();String res = new String(buffer,0,len);System.out.println(res);//获取客户端的IP地址和端口号System.out.println(packet.getAddress().getHostAddress());System.out.println(packet.getPort());System.out.println("----------------------");}}
}

1.2.3 运行结果

 


http://www.ppmy.cn/server/95613.html

相关文章

vue实现歌词滚动效果

1.结构 <template><div class"lyricScroll"><div class"audio"><audio id"audio" src"./common/周传雄-青花1.mp3" controls></audio></div><div class"container" id"contai…

GPT-4o mini一手测评:懂得不多,但答得极快

在性能方面,GPT-4o mini 在 MMLU 上的得分为 82%,在 LMSYS 排行榜的聊天方面分数优于 GPT-4。 OpenAI 突然上线新模型 GPT-4o mini, 声称要全面取代 GPT-3.5 Turbo。 在性能方面,GPT-4o mini 在 MMLU 上的得分为 82%,在 LMSYS 排行榜的聊天方面分数优于 GPT-4。 在价格…

太坑了!RabbitMQ+PHP开发的辛酸经历

博主介绍&#xff1a;全网粉丝10w、CSDN合伙人、华为云特邀云享专家&#xff0c;阿里云专家博主、星级博主&#xff0c;51cto明日之星&#xff0c;热爱技术和分享、专注于Java技术领域 &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅…

《Unity3D网络游戏实战》学习与实践--制作一款大乱斗游戏

角色类 基类Base Human是基础的角色类&#xff0c;它处理“操控角色”和“同步角色”的一些共有功能&#xff1b;CtrlHuman类代表“操控角色”​&#xff0c;它在BaseHuman类的基础上处理鼠标操控功能&#xff1b;SyncHuman类是“同步角色”类&#xff0c;它也继承自BaseHuman&…

计时器(Python)

代码 import time from tkinter import ttk import threading from tkinter import scrolledtext import tkinter as tkclass TimerApp:def __init__(self, root):self.root rootself.root.title("计时器")self.screen_w, self.screen_h self.root.winfo_screenwi…

Mybatis面试

Mybatis 面试 1、Mybatis 的执行流程是什么&#xff1f; 1、读取MyBatis配置文件&#xff1a;mybatis-config.xml 加载运行环境 和 映射文件 2、构造会话工厂 SqlSessionFactory &#xff08;全局只有一个&#xff09; 3、会话工厂创建SqlSession对象&#xff08;项目与数据…

【c++】爬虫到底违不违法?

很多小伙伴都想知道爬虫到底违法吗&#xff0c;今天博主就给大家科普一下 爬虫本身并不违法&#xff0c;但使用爬虫采集数据可能涉及违法风险&#xff0c;具体取决于采集行为是否侵犯了他人的合法权益&#xff0c;尤其是隐私权和个人信息权。以下是对爬虫是否违法的详细分析&am…

C# 6.定时器 timer

使用控件&#xff1a; 开启定时器&#xff1a;timer1.Start(); 关闭定时器&#xff1a;timer1.Stop(); 定时间时间间隔:Interval timer1.Interval 1000; Interva等于1000是每一秒刷新一次 定时器默认时间间隔是100ms 代码创建定时器 ①创建 Timer t1 new Timer(); …