java网络编程之UDP与TCP

Java网络编程UDP与TCP(Socket编程)         摘要:读完本章您将对Java网络编程有一定的了解,知道UDP与TCP的区别,会用Java实现UDP、TCP传输数据。        一、什么是UDP、TCP。        网络编程顾名思义就是利用编程语言实现不同终端之间的通信,这其中包括发送端(客户端)通过规定好的协议组装包,在接收端(服务端)将包进行解析,从而提取出对应的信息,实现通信的目的。这里的协议主要有UDP与TCP协议... 阅读详情

说到网络编程,我们可以简单的将其理解为数据的传输,只不过这个数据的传输不是本机内的数据传输,而是与互联网中的某台机器进行数据的传输。数据的传输是通过流来完成的,而且,为了使数据能够顺利的完成传输过程,所以数据在传输时也要遵守相关的协议。

IP:

就和我们去邮局寄快递一样,我们要写上快递要去的地址。ip(如10.12.82.66) 就如同这地址一般,可以让你发送的数据正确的送往对应ip的主机上,所以当我们要访问互联网上某台主机的时候,可以通过ip找到主机并获取想要的内容。我们可以直接在浏览器上输入119.75.218.70,就可以访问到百度。但是往往我们很难记住这么复杂的ip地址,于是就给ip取了一个“名字”,域名是一个IP地址上的“面具” ,当我们输入www.baidu.com时,浏览器首先会查下了一下本机的hosts文件有没有对应用的地址,没有则去DNS服务器找到对应的ip地址,最后才会根据这个地址访问相关的内容。

java将ip地址也封装成了一个对象,InetAddress。下面了解一下InetAddress的基本用法。

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

public class InetAddressTest {

	public static void main(String[] args) {
		inetAddressTest();
	}

	private static void inetAddressTest() {
		try {
			// 获取本地主机的的InetAddress对象
			// InetAddress inet = InetAddress.getLocalHost();
			// 获取互联网中主机的InetAddress对象
			InetAddress inet = InetAddress.getByName("www.baidu.com");
			// InetAddress inet = InetAddress.getByName("119.75.217.109");

			// 输出ip信息。
			System.out.println(inet);
			System.out.println(inet.getHostName());
			System.out.println(inet.getHostAddress());
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}
	}
}

UDP:面向无连接,每次数据包的大小限制在64K之内,是不可靠的连接,但是速度快。比如:聊天,视频会议,桌面共享等。
UDP不管对方在不在,直接将数据传送过去。
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class UDPTest {
	/**
	 * @param args
	 *            将数据通过UDP的方式发送出去。
	 */
	public static void main(String[] args) {
		DatagramSocket ds = null;
		try {
			// 创建socket,udp服务
			ds = new DatagramSocket();
			// 将要传输的数据封闭成数据包
			byte[] buf = "hello java socket".getBytes();
			DatagramPacket dp = new DatagramPacket(buf, buf.length,
					InetAddress.getByName("10.12.82.66"), 10000);
			// 发送数据。
			ds.send(dp);
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (ds != null)
				ds.close();
		}
	}
}

TCP:面向连接,形成传输数据的通道,可进行大数据传输。三次握手完成连接,是可靠协议,效率会稍低。
TCP是面向连接的,下面是一个简单的TCP服务端,运行后,通过浏览器访问:http://localhost:10000/就可以接收其发送过来的数据。
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Test1 {

	public static void main(String[] args) {
		try {
			//创建服务端,端口号为10000
			ServerSocket ss = new ServerSocket(10000);
			//获取连接的客户对象。
			Socket s = ss.accept();
			//向客户端写入数据
			PrintWriter out = new PrintWriter(s.getOutputStream(),true);
			String ip = s.getInetAddress().getHostAddress();
			out.println("您好:"+ip);
			
			s.close();
			ss.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


Java 网络编程 ①-TCP || UDP || Socket 在实际的网络通信过程中,需要经过需要节点或路由,那么所发送的数据不可能百分百到达对方,在传输途中,数据可能会因为某些不可抗力因素导致比特翻转(就是1变成0,0变成1),从而导致解析出的数据出现错误,也有可能整个数据在传输的过程丢失,也就是我们常说的 "丢包";:连接通常指的不是物理上的连接,而是逻辑上的连接,并不是两个事物通过链条连接在一起,而是通过某种抽象的东西将这两个事物所连接起来,使其有关系;文件要关闭,就必须考虑清楚这个文件对象的生命周期,此处的 socket 对象,伴随整个 UDP服务器; 阅读详情

相关推荐

JAVA——网络编程UDP/TCP

一: 计算机网络可以实现多台计算机的连接但不同的计算机操作系统和硬件体系结构不同,为了提供通信支持位于同一网络中的计算机必须要遵循一定的规则。目前应用最广泛的是TCP/IP,UDP,ICMP等协议。 IP地址和端口号 要想使网络中的计算机能够通信,必须为每台计算机指定一个标识号,通过这个标识号指定接收数据的计算机或者发送数据的计算机。 通过IP地址可以连接到指定的计算机,但想要访问到目标计算机的程序还需要指定的端口号,不同的程序通过不同的端口号来区分。 ...

GYFsix的博客 497

Java网络编程入门(UDP&TCP)

Java网络编程入门(UDP&TCP) Java网络编程需要你具备文件、IO流、计算机网络等基本知识储备,本人博客下有IO编程系列博客可点击‘File&IO入门’进入阅读。下面我将以Demo驱动的方式带着大家一起入门UDP&TCP。 前期知识储备 网络编程三要素之IP概述 * 每个设备在网络中的唯一标识 * 每台网络终端在网络中都有一个独立的地址,我们在网络中传输数...

知飞翀的博客 794

Java网络编程:TCP与UDP通信实践

UDP多播允许一台主机发送数据到多个接收者,这种方式对那些需要向多个目的地发送相同数据的应用程序(如视频广播、在线游戏)非常有用。在Java中,可以通过类来实现多播通信。使用多播时,需要选择一个或多播组地址,并将多个接收者加入到这个多播组。下面的代码展示了如何加入一个多播组并发送一个多播消息:try {// 创建一个MulticastSocket实例// 指定多播组地址// 加入多播组// 创建要发送的多播消息。

weixin_34945060的博客 869

JAVA网络编程(UDP与TCP)

一、网络编程的三要素 1、IP地址:设备在网络中的地址,是唯一的标识。 IPV4的格式: 具有32位,采用点分十进制进行表示,即每八位转换为十进制并用点进行分隔。 IPV6的格式: 具有128位,采用冒分十六进制表示法,即把每一组(16位2字节)转化为16进制并用冒号分隔开来。 常用cmd命令: ipconfig:查看本机IP地址。 ping IP地址:检查两台设备之间网络是否连通。 Java提供查看IP地址的类InetAddress类: static InetAddress getB.

weixin_45994580的博客 1407

从零到一:手把手教你用Python搭建医学影像识别CNN模型(附完整代码)

本文详细介绍了如何使用Python和TensorFlow/Keras从零开始构建一个医学影像识别的CNN模型,涵盖数据预处理、模型架构设计、训练调优及部署全流程。通过实战案例和完整代码,帮助开发者快速掌握深度学习在医学影像识别中的应用,特别适合医疗AI领域的初学者和研究者。

spark7igniter的博客 200

STM32 超声波模块输入捕获测距(标准库)

通道2设置为下降沿触发,触发瞬间会将CNT的记录到CCR2中,由于上升沿触发时已经将CNT置零所以此时的CNT的值就是高电平的持续时间。通道1设置为上升沿触发,触发的瞬间会将CNT的值记录到CCR1里面,同时设置通道1触发带有从模式,并把从模式设置为置零CNT。超声波传感器模块上面通常有两个超声波元器件,一个用于发射,一个用于接收。电路板上有四个引脚:VCC、GND、Trig(触发)、Echo(回应)。输入捕获原理可以看看这位大佬,感觉写的很清楚,工作电压与电流:5V,15mA。感测角度:不小于15度。

qq_62425900的博客 2082

java网络编程之UDP、TCP

UDP:/** * UDP传输 * * 1.发送Send * 创建DatagramSocket, 随机端口号 * 创建DatagramPacket, 指定数据, 长度, 地址, 端口 * 使用DatagramSocket发送DatagramPacket * 关闭DatagramSocket * @throws Exception * */ /** * 2.接收Receive...

Pastthewind的博客 361

告别DLTS的模糊地带:手把手教你用拉普拉斯深能级瞬态光谱(LDLTS)精准揪出半导体缺陷

本文详细介绍了拉普拉斯深能级瞬态光谱(LDLTS)技术在半导体缺陷检测中的高分辨率解决方案。相比传统DLTS,LDLTS通过拉普拉斯变换和正则化算法,将分辨率提升至1meV,有效解析复杂重叠缺陷谱,适用于硅、GaN等材料的精确缺陷分析。文章涵盖LDLTS原理、系统搭建、测量流程及工业应用案例,为半导体工艺优化提供强大工具。

weixin_29238147的博客 193

java基础整理——UDP和TCP通讯协议小结

UDP协议的特点         1.发送数据都是需要把数据封装到数据包中再发送 的,面向无连接。         2.数据包大小不能超过64kb。         3.因为udp协议是面向无连接的, 所以会出现数据包丢失的情况。         4.因为面向无连接,所以速度快。         5.udp协议是不分客户端与服务端,只分发送端与接收端。 UDP通讯:

李泽文的博客 459

MTK平台 MT6789 烧录 efuse 3.0 Configuration SOP

=====================生成cert1和cert2 key===============================================生成efuse key相关文件===========================================签名DA==========================================================正常编译。=====================Security3.0 的SOP 说明。

a785722173的博客 2329

LLM Wiki 的完整输入体系:LLM Wiki极简实战

LLM Wiki 的输入分为**四大类**,覆盖从"原始知识注入"到"系统行为控制"的全流程,所有输入都遵循"**原始资料不可变,规则可迭代,人类反馈闭环**"的核心原则。

ZhangJiqun&191cm&85kg 320

Java网络编程之UDP与TCP的网络编程

本文将介绍java中的网络编程,常见的网络编程方式有两种,一种是UDP,另外一种是TCP,其中UDP的服务器与客户端之间不需要建立连接就能进行通信,而TCP需要先建立服务器与客户端之间的连接才能进行通信,此外TCP与UDP不能进行通信。

未见花闻的博客 2634

Python爬虫实战:携程/飞猪酒店信息爬取与动态价格分析

在当今数字化旅游时代,酒店预订平台的复杂筛选条件和动态定价机制为数据分析和价格监控带来了巨大挑战。本文将深入探讨如何使用最新的Python爬虫技术来抓取携程和飞猪平台的酒店信息,处理复杂的筛选条件,并解析动态价格数据。本文详细介绍了如何使用最新的Python爬虫技术来抓取携程和飞猪平台的酒店信息。通过结合httpxplaywrightparsel强大的反反爬虫能力:通过浏览器指纹伪装、请求签名、智能延迟等技术应对各种反爬措施高效的数据解析:使用CSS选择器和XPath精确提取所需信息灵活的数据存储。

2201_76125261的博客 414

Java:TCP/UDP网络编程

TCP与UDP简单上手

qq_73698057的博客 1708

芒果YOLO11改进59:分类损失函数Loss篇FocalLoss:即插即用|最新改进FocalLoss损失函数,提高处理不平衡数据分类场景下的任务性能,提升YOLO11检测精度

即插即用|最新改进FocalLoss损失函数,提高处理不平衡数据分类场景下的任务性能,提升YOLO11检测精度

包括YOLOv5、YOLOv7、YOLOv8等模型改进 548

企业第三方应用开发概述_测试第三方应用对接企业_以及如何使用流程_Demo演示---企业微信开发002

那么第三方公司开发了应用,做为服务提供商,如果,一个企业想使用这个应用,我开发的这个应用的话,那么。其实就是给我们的应用,安装一个,使用他的企业,分配一共企业 允许这个企业使用我们的应用的功能,可以看到其实就是多了运营规范,因为,第三方应用,其实就相当于,是第三方公司开发的,程序,首先来看一下。然后再来看,这里我们选择这个公司,其实可以,选择到具体的,部门,或者是。然后我们使用一个企业的管理员账号进行,扫码,来授权,这个应用,可以。其实就是指定,我这个企业中,哪个部门,或者哪些员工,可以使用。

添柴程序猿的专栏 413

[网络编程]TCP和UDP的比较 及 通过java用UDP实现网络编程

前面我们知道, UDP是无连接的, 所以本身并没有存储对方的ip和端口信息, 但是上述我们用来接收数据的DatagramPacket中, 存放了客户端的ip和接口, 所以我们可以通过getSocketAddress()方法来获取到。我们现在只是进行一个简单的实现, 服务器收到客户端请求后, 无需做什么, 客户端请求啥, 直接响应啥, 这种程序, 就叫做"回显"(Echo)系统中的socket, 可以理解成是一种"文件", socket文件, 可以视为是"网卡"这种硬件设备的抽象表现形式。

m0_73992740的博客 1212

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Java-网络编程(UDP/TCP)

当一台计算机要与另一台计算机通信时,需要知道另外一台计算机的地址.互联网协议(Internet Protocol ,IP)可以用来唯一的标识互联网上的计算机.IP地址由4段用点隔开的0~255的十进制数组成例如,192.168.10. 2 .计算机上的每一个程序都会对应一个端口号.例如使用计算机可以进行E-Mail(邮件) WWW(浏览器) FTP(文件传输)操作. 这些程序都需要通过互联网进行数据的传输.计算机是通过端口进行的判断数据的归属,不同的程序有不同的端口.通信的两端都有Socket。

棉花糖老丫 1935

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java网络编程之UDP和TCP套接字

介绍使用Java如何进行网络编程, 主要有UDP和TCP两种方式; UDP的特点是无连接, 不可靠传输, 面向数据报, 全双工; TCP的特点是有连接, 可靠传输, 面向字节流, 全双工.

trong_ 的烂笔头 3791

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Java网络编程:TCP与UDP通信实现及网络编程基础

是Java中用于表示IP地址的类,提供了获取主机名、IP地址等网络信息的方法。UDP:无连接、速度快、不可靠,适用于实时通信(如视频、游戏);TCP:面向连接、可靠、速度较慢,适用于数据准确性要求高的场景(如文件传输、登录)。开发步骤上,UDP通过和实现数据报传输,TCP通过和Socket实现字节流传输。实际开发中,需根据业务需求选择协议,并注意资源释放(如关闭Socket)、并发处理(如线程池)等问题。

FUYY'S BLOG 1335

Java 网络编程(TCP编程 和 UDP编程)

我们开发的网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层如何使用传输层的服务呢?在应用层和传输层之间,则是使用套接Socket来进行分离。套接字就像是传输层为应用层开的一个小口,应用程序通过这个小口向远程发送数据,或者接收远程发来的数据。而这个小口以内,也就是数据进入这个口之后,或者数据从这个口出来之前,是不知道也不需要知道的,也不会关心它如何传输,这属于网络其它层次工作。Socket实际是传输层供给应用层的编程接口。Socket就是应用层与传输层之间的桥梁。

weixin_61635597的博客 1738

java网络编程(TCP、UDP)

java的网络编程: TCP:TCP 是传输控制协议的缩写,它保障了两个应用程序之间的可靠通信。通常用于互联网协议,被称 TCP / IP。 UDP:UDP 是用户数据报协议的缩写,一个无连接的协议。提供了应用程序之间要发送的数据的数据包。   udp和tcp的区别: 1)套接字Socket的参数不同; (2)UDP不需要调用listen和accept; (3)UDP收发数据分别用se...

jklcc1的博客 2048

java网络编程TCP,UDP简述

网络编程 Java 网络编程 网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。 java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细节。你可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节。 java.net 包中提供了两种常见的网络协议的支持: TCP:TCP 是传输控制协议的缩写,它保障了两个应用程序之间的可靠通信。通常用于互联网协议,被称 TCP / IP。 UDP:UDP 是用户数据报协议的缩写,一个无连接的协议。提供了应用程

堂堂百星王者 871

Java网络编程 TCP与UDP协议

本文介绍了计算机网络和网络编程的基础知识。主要内容包括:1. 计算机网络概念,互联网作为网络的网络,TCP/IP协议的重要性;2. IP地址的类型(IPv4/IPv6、公网/内网)及子网划分原理;3. 网络分层模型(OSI和TCP/IP模型);4. TCP和UDP协议的特点及区别;5. Java网络编程实现,包括TCP编程(ServerSocket/Socket)和UDP编程(DatagramSocket/DatagramPacket)的基本用法,涵盖服务器端和客户端的创建、数据传输等核心操作。文章提供了J

m0_65384516的博客 744

java—网络编程TCP和UDP

Java 网络编程是通过java.net包实现的,Socket类是用来进行客户端与服务器通信的主要类。服务器端通过类来监听客户端的请求,客户端则通过Socket类来连接服务器。

weixin_62951914的博客 1198

Java之TCP和UDP进行网络编程

本文详细讲解TCP和UDP的编程思路和代码。

tq02的博客 1510
上一篇: java关于URL、URLEncoder、URLDecoder类的使用
下一篇: 一个大学生从堕落走向编程之路的感想
Sweeter
博客等级 码龄14年 81粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值