`
Luob.
  • 浏览: 1598463 次
  • 来自: 上海
社区版块
存档分类
最新评论

java之 23天 UDP 网络编程 (一)

    博客分类:
  • Java
阅读更多
网络编程

import java.net.InetAddress;
import java.net.UnknownHostException;


/**
 * 网络编程
 * 网络模型
 *   OSI 模型
 *   TCP/IP模型
 * 网络通讯要素
 *   IP地址
 *   端口号 
 *   传输协议:通讯协议
 *   
 * ------------------------------------- 
 *  OSI参考模型 		TCP/IP参考模型
 *  应用层			[
 *  表示层				应用层 (http /ftp /smtp)
 *  会话层			]
 *  
 *  传输层			传输层  (TCP协议)
 *  网络层			网际层  (IP协议)
 *  
 *  数据链路层			[
 *  物理层			主机至网络层]
 * ----------------------------------------------- 
 * 
 * IP地址:InetAddress
 *		网络中设备的标识
 * 		不易记忆,可用主机名
 *      本地回环地址:127.0.0.1 主机名:localhost
 * 端口号
 *		用户标识进程的逻辑地址.不同进程的标识
 *      有效端口 0~65535,其中0-1024端口系统使用或保留端口.
 * 传输协议
 *      通信的规则
 *      常见的协议:TCP  UDP
 *
 *
 * UDP:(无连接,不可靠,有限制,速度快.) 网络视频会议,宁波,聊天,桌面共享
 *     将数据及源和目的封装成数据包中,不需要建立连接
 *     每个数据包的大小限制在64k内
 *     因无连接,是不可靠协议
 *     不需要建立连接,速度快.
 *     
 * TCP: (有连接,很可靠,没限制,速度慢.) 文件下载.
 *	   建立连接,形成传输数据通道.
 *   在连接的中进行大量数传递
 *   通过三次握手完成连接.是可靠协议(三次握手:  在吗?(A) -------->在的(B)---------> 知道你在了(A)---------->B(知道了) )
 *   必须建立连接,效率稍低.
 *   
 * Socket:(插座的意思) socket370 
 *   Socket:就是为网络服务提供的一种机制.
 *   通信的两端都有Socket.
 *   网络通信其实就是Socket间的通信
 *   数据在两个Socket间通过IO传输
 *   
 * 每个协议都有不同Socket对象
 * 
 */


public class NetDemo {

	public static void main(String[] args) throws UnknownHostException {
		InetAddress i=InetAddress.getLocalHost();
		System.out.println(i.toString());
		System.out.println("address:"+i.getHostAddress());
		System.out.println("name:"+i.getHostName());
		
		System.out.println("根据主机名获取 InetAddress");
		
		/*InetAddress ia=InetAddress.getByName("192.168.1.168");
		System.out.println("address:"+ia.getHostAddress());
		System.out.println("name:"+ia.getHostName());*/

		System.out.println("根据主机名获取 InetAddress");
	/*	
		InetAddress ib=InetAddress.getByName("www.baidu.com");
		System.out.println("address:"+ib.getHostAddress());
		System.out.println("name:"+ib.getHostName());*/
		
		InetAddress[] ids=InetAddress.getAllByName("www.baidu.com");
		for (InetAddress inetAddress : ids) {
			System.out.println(inetAddress);
		}

	}

}



UDP的传输

//客户端

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;


/**
 * 需求:通过udp传输方式,将一段文字数据发送出去
 * 思路:
 *  1)建立updsocket服务
 *  2)提供数据,并将数据封装到数据包中
 *  3)通过socket服务的发送功能,将数据包发送出去.
 *  4)关闭资源
 */
public class UdpSend {
	public static void main(String[] args) throws IOException {
		
		//创建udp服务,通过DatagramSocket对象
		DatagramSocket ds=new DatagramSocket(8888);  //可以指定端口发送 ,否则 系统随机发送
		
		
		//2,确定数据,并封装成数据包
			byte[] buf="udp ge men lai le".getBytes();
			DatagramPacket dp=new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.1.121"),10000);
			
			//3.通过Socket服务,将已有的数据包,发送出去,通过send方法
			ds.send(dp);
		
		//4.关闭资源
		ds.close();
		
	}

}

//服务端
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/**
 * 需求:
 * 定义一个应用程序,用于接受udp协议传输的数据并处理
 * 思路:
 *   1)定义udpSocket服务:通常会监听一个端口,其实就是给这个接受网络应用程序定义的数字标识.
 *   2)定义一个数据包,因为 要存储接收到的字节数据,因为数据包对象中有更多功能可以提取字节数据中的不同数据信息
 *   3)通过Socket服务端额receive方法将收到的数据存入一定义好的数据包中.
 *   4)通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上
 *   5)关闭资源
 */
public class UdpReceive {

	public static void main(String[] args) throws IOException {
		//1.建立udp socket 建立端点.
		DatagramSocket ds=new DatagramSocket(10000);   //服务建立一次就可以了
		while(true){
			//2.定义数据包,用于存储数据.
			byte[] buf=new byte[1024];
			DatagramPacket dp=new DatagramPacket(buf, buf.length);
			
			//3.通过服务的receive方法将接收到的数据存入到数据包中
			ds.receive(dp);  //接受数据到数据包中,阻塞式方法.
			
			//4.通过数据包的方法 获取其中的数据.
			String ip=dp.getAddress().getHostAddress();
			String data=new String(dp.getData(),0,dp.getLength());
			int port=dp.getPort();
			System.out.println(ip+"::"+data+"::"+port);
		}
		//ds.close();
	}

}



UDP 键盘循环录入发送给服务端

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class UdpSend2 {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub

		DatagramSocket ds=new DatagramSocket();
		
		BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
		
		String line=null;
		while((line=bufr.readLine())!=null){
			if("886".equals(line))
				break;
			byte[] buf=line.getBytes();
			//255 是发广播 所有能够接受的 都能监听到.
			//192.168.1.0: 网络段
			//192.168.1.255: 广播地址
			DatagramPacket dp=new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.1.255"),10000);
			ds.send(dp);
		}
		ds.close();
		
	}
}

class UdpRece2{
	public static void main(String[] args) throws IOException{
		DatagramSocket ds=new DatagramSocket(10000);
		
		while(true){
			byte[] buf=new byte[1024*64]; //不会大于 64k 的
			DatagramPacket dp=new DatagramPacket(buf, buf.length);
			ds.receive(dp);
			String ip=dp.getAddress().getHostAddress();
			String data=new String(dp.getData(),0,dp.getLength());
			System.out.println(ip+"::"+data);
			
		}
		
	}
	
}
分享到:
评论

相关推荐

    【大数据课设】p105出租车数据可视化分析-大数据-实训大作业.zip

    项目资源包含:可运行源码+数据集+文档 python + numpy, pandas, matplotlib, pyecharts, wordcloud 适用人群:学习不同技术领域的小白或进阶学习者;可作为课程设计、大作业、工程实训或初期项目立项。 数据来源:数据集taxis.csv从网络下载 数据清洗:异常值与缺失值的处理:有一些数据distance(乘车距离)为零而且上下车地点为空,还有些一些数据的payment(支付方式)为空。 数据预处理:将列名更改成中文 标准化与归一化: 数据分析: 数据可视化:

    TypeScript 入门教程

    TypeScript 入门教程

    人脸识别_课堂考勤_OpenCV_服务端系统_1741777828.zip

    人脸识别项目实战

    历届电赛试题及综合测评(真题+模拟题)

    本资源汇总了 历届全国电子设计竞赛(电赛)真题+模拟题,涵盖 电路设计、嵌入式系统、信号处理、自动控制等核心考点,并提供详细解析及综合测评,帮助参赛者高效备赛、查漏补缺、提升实战能力。 适用人群: 适合 准备参加电子设计竞赛的大学生、电赛爱好者、电子信息类相关专业的学生,以及希望提高电子设计和电路分析能力的工程师。 能学到什么: 电赛考察重点:熟悉往届竞赛的命题方向及考核重点。 电路设计与仿真:提升模拟电路、数字电路、单片机等核心技能。 问题分析与解决能力:通过综合测评找到薄弱点并针对性提升。 实战经验:掌握竞赛策略,提高应试效率和设计能力。 阅读建议: 建议先 通读真题,了解题型与解题思路,然后 结合模拟题实战演练,查找不足并通过测评强化练习,逐步提升竞赛能力。

    2024人工智能如何塑造未来产业:AI对各行业组织带来的的变革研究研究报告.pdf

    2024人工智能如何塑造未来产业:AI对各行业组织带来的的变革研究研究报告.pdf

    人脸识别_Golang_SDK_命令行登录_微信小程序应用_1741772240.zip

    人脸识别项目源码实战

    Vulkan原理与实战课程

    给大家分享一套课程——Vulkan原理与实战课程

    SiriYXR_Sokoban11_1741860914.zip

    c语言学习

    海豚鲸鱼数据集 5435张图 正确识别率可达92.6% 可识别:海豚 虎鲸 蜥蜴 海豹 鲨鱼 龟 支持yolov8格式标注

    海豚鲸鱼数据集 5435张图 正确识别率可达92.6% 可识别:海豚 虎鲸 蜥蜴 海豹 鲨鱼 龟 支持yolov8格式标注

    答谢中书书教学设计.docx

    答谢中书书教学设计.docx

    人脸识别_环境搭建_dlib_face_recognitio_1741771308.zip

    人脸识别项目源码实战

    网络技术_Web服务器_C语言_学习交流版_1741863251.zip

    c语言学习

    安卓开发_Gradle配置_React_Native_Meg_1741777287.zip

    人脸识别项目源码实战

    人工智能_深度学习_图像识别_UI界面_项目展示.zip

    人脸识别项目实战

    基于Springboot框架的美发门店管理系统的设计与实现(Java项目编程实战+完整源码+毕设文档+sql文件+学习练手好项目).zip

    本美发门店管理系统有管理员和用户两个角色。用户功能有项目预定管理,产品购买管理,会员充值管理,余额查询管理。管理员功能有个人中心,用户管理,美容项目管理,项目类型管理,项目预定管理,产品库存管理,产品购买管理,产品入库管理,会员卡管理,会员充值管理,余额查询管理,产品类型管理,系统管理等。因而具有一定的实用性。 本站是一个B/S模式系统,采用SSM框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得美发门店管理系统管理工作系统化、规范化。本系统的使用使管理人员从繁重的工作中解脱出来,实现无纸化办公,能够有效的提高美发门店管理系统管理效率。 关键词:美发门店管理系统;SSM框架;MYSQL数据库;Spring Boot 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2 2.1 MYSQL数据库 2 2.2 B/S结构 3 2.3 Spring Boot框架简介 4 3系统分析 4 3.1可行性分析 4 3.1.1技术可行性 4 3.1.2经济可行性 5 3.1.3操作可行性 5 3.2系

    Python实现基于SSA-CNN-GRU麻雀算法优化卷积门控循环单元数据分类预测的详细项目实例(含完整的程序,GUI设计和代码详解)

    内容概要:本文档介绍了基于SSA-CNN-GRU麻雀算法优化卷积门控循环单元数据分类预测的详细项目实例,重点讲述了该项目的背景、目标、挑战与解决方案、技术特点、应用领域等方面的内容。文档详细记录了从项目启动、数据预处理、算法设计(SSA优化CNN-GRU模型)、构建与评估模型到实现美观的GUI界面整个过程,并讨论了防止过拟合的技术如正则化、早停和超参数优化。另外还涵盖了项目扩展的可能性、部署和应用策略、需要注意的地方以及未来改进的方向。全文强调了模型的泛化能力和计算效率,展示了该混合算法模型在实际应用中的优越性能。 适合人群:具备一定的Python编程经验及机器学习基础知识的研究人员和技术人员;对深度学习、智能优化算法及实际应用感兴趣的学者和从业者;寻求提升数据分析和预测准确性的金融分析师、数据科学家等相关专业人士。 使用场景及目标:本文档非常适合用作学习和参考资料,以掌握如何将SSA、CNN与GRU三种先进技术结合起来进行复杂的分类和预测问题求解。具体应用场景包括但不限于以下几个方面:金融领域——股票价格预测;医疗保健领域——辅助诊断;工业制造——预防性维护;智能家居——个性化服务;以及其他涉及到时序数据分析和多模态数据处理的场合。文档既包含了理论知识又提供了完整的源代码示例,可以帮助读者理解算法原理并通过实践中加深对其的认识。 其他说明:该项目不仅仅是关于算法的设计实现,更是有关于系统的整体架构规划以及工程上的考量,比如环境准备(确保环境洁净、必要包的安装等)、数据准备、GPU配置支持等等。同时文中给出了详细的代码片段,方便开发者理解和复现实验成果。值得注意的是,虽然文中提供了一套通用解决方案,但在真实场景下还需要针对性的调整参数或修改网络结构来达到最好的性能效果。此外,对于追求更高的预测精度或解决更大规模的问题,作者建议进一步探索深度强化学习等高级技术和多任务学习策略,并且考虑使用增量学习让模型能够适应新数据而不必重新训练整个模型。最后提到安全性和隐私保护也是项目实施过程中的重要因素,要妥善保管用户的敏感信息并且做到合法合规地收集和使用数据。

    人脸识别_T形分布_Gabor变换_特征提取_增强鲁棒性_1741777397.zip

    人脸识别项目实战

    13005463562_FaceWeb_1741771809.zip

    人脸识别项目实战

    水下垃圾检测数据集,基于voc和yolo标注的两种格式

    水下垃圾检测数据集,基于voc和yolo标注的两种格式,共23,056个文件,已经划分了训练集和验证集、测试集。并且提供了真实水下的视频数据,可以用作视频推理

    (参考GUI)MATLAB车辆检测.zip

    (参考GUI)MATLAB车辆检测.zip

Global site tag (gtag.js) - Google Analytics