Java网络编程:UDP/TCP实现实时聊天、上传图片、下载资源等

简介: ip地址的分类:1、ipv4、ipv6127.0.0.1:4个字节组成,0-255,42亿;30亿都在北美,亚洲就只有4亿2011年就用尽了。

网络编程实战


ip地址的分类:


1、ipv4、ipv6


127.0.0.1:4个字节组成,0-255,42亿;30亿都在北美,亚洲就只有4亿


2011年就用尽了。


ipv6:

39d7243d166829627f29d6db6f804bc3_8e455918e04941f5bbca984694bcad25.png


2、公网ip、私网ip


实践获得ip地址

590e44daf453626b22dbe31902205994_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_14,color_FFFFFF,t_70,g_se,x_16.png


端口


端口表示计算机上的一个程序的进程(大概可以这么理解)


比如说一栋楼,是一个ip,每一户都是端口号。


不同的进程有不同的端口号。

d4cde6b3c70764824d9dbae03a79c35f_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_12,color_FFFFFF,t_70,g_se,x_16.png


TCP聊天实现

2ecfa4cd62e865e42223c6a42a71b349_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_15,color_FFFFFF,t_70,g_se,x_16.png


TCP文件上传

d5d739bf59df0f6f20bbafc77cbdf4ed_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_13,color_FFFFFF,t_70,g_se,x_16.png


UDP

7bddfa28eff530f83076f66c048920d1_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_14,color_FFFFFF,t_70,g_se,x_16.png

对于UDP并不是很强调客户端或者服务端的概念,谁都可以做服务端客户端的。


UDP聊天实现

注意string是不可读的,必须转成字节!


d2cb491819105971999ab1600a342bd8_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_20,color_FFFFFF,t_70,g_se,x_16.png

d87fa1beb13daa6a71aa21a764130c49_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_20,color_FFFFFF,t_70,g_se,x_16.png



UDP实现多线程聊天

发送端

6a482221b26baf72e24f69356a95f7b3_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_20,color_FFFFFF,t_70,g_se,x_16.png

b518ea46c0d5ffda30b91ccc44cdd61c_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_20,color_FFFFFF,t_70,g_se,x_16.png

接收端

d0f21a4eb84d53cadd96b3611fc55296_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_20,color_FFFFFF,t_70,g_se,x_16.png


902b7d6adfe4eaae53599d40c9ab1724_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_20,color_FFFFFF,t_70,g_se,x_16.png

然后开启两个线程

078c5e56a741ba7244436593e138a102_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_15,color_FFFFFF,t_70,g_se,x_16.png


URL下载资源

303e4b5fbbad7098dc86f37e34e26f0d_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA572R5LqL6ZqP6aOOMjAxNw==,size_16,color_FFFFFF,t_70,g_se,x_16.png

相关文章
|
3天前
|
数据采集 Java 开发者
JAVA网络编程深度探索:URL与URLConnection的精湛技艺
Java网络编程核心在于URL和URLConnection。URL是资源的唯一标识,用于定位网络资源,支持解析、编码解码及参数操作。URLConnection则实现数据交换,允许GET/POST请求,可定制请求头、设置超时,是网络交互的关键。两者结合,适用于网络爬虫等场景,深入学习能提升编程技巧并揭示网络编程奥秘。
|
3天前
|
XML JSON 搜索推荐
【高手过招】JAVA网络编程对决:URL与URLConnection的高级玩法,你敢挑战吗?
【6月更文挑战第22天】在Java网络编程中,URL与URLConnection是核心工具,高手利用它们进行高级操作。从定制请求头(如User-Agent和Authorization)以适应不同场景,到利用POST请求发送复杂数据,甚至是通过设置代理(HTTP或SOCKS)穿越网络障碍,以及运用异步处理和流操作提升效率,每个技巧都是提升网络交互的关键。通过深入学习和实践,开发者可以在网络编程领域不断提升,应对各种挑战。
|
2天前
|
网络协议 Java 程序员
TCP/IP协议栈是网络通信基础,Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用
【6月更文挑战第23天】 **TCP/IP协议栈是网络通信基础,它包含应用层(HTTP, FTP等)、传输层(TCP, UDP)、网络层(IP)、数据链路层(帧, MAC地址)和物理层(硬件信号)。Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用,如Socket和ServerSocket用于客户端和服务器通信。**
8 3
|
3天前
|
Java
【思维导图】JAVA网络编程思维升级:URL与URLConnection的逻辑梳理,助你一臂之力!
【6月更文挑战第22天】Java网络编程中,URL是资源定位器,用于解析和创建网络地址;URLConnection接口负责建立到URL资源的连接。示例展示了如何使用URL类获取协议、主机、端口和路径,以及如何通过HttpURLConnection进行GET/POST请求,设置超时并处理响应。思维导图概述了从创建URL到设置请求属性、发送请求及处理响应的完整流程,帮助理解两者在网络编程中的作用。
|
16小时前
|
网络协议 Java
java建立非阻塞TCP链接
java建立非阻塞TCP链接
5 0
|
1天前
|
Java API UED
如何在Java中进行网络编程?
如何在Java中进行网络编程?
|
1月前
|
消息中间件 Java Linux
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
|
17天前
|
网络协议 算法 Linux
【嵌入式软件工程师面经】Linux网络编程Socket
【嵌入式软件工程师面经】Linux网络编程Socket
35 1
|
2天前
|
安全 物联网 Linux
学习Linux对网络安全的重要性
**学习Linux对网络安全至关重要:** 1. 开源操作系统广泛应用于服务器、网络设备,掌握Linux是安全专家必备技能。 2. Linux内置安全特性,如最小权限和防火墙,加上丰富的安全工具,提供强大保障。 3. 可定制性允许灵活配置,满足安全需求,开源社区提供持续更新和教育资源。 4. 学习Linux能提升攻防能力,用于系统加固和渗透测试,适应跨平台安全场景。 5. 随着云计算和物联网发展,Linux在网络安全中的角色日益关键。
13 3
|
20天前
|
Linux 数据安全/隐私保护 Windows
linux 搭建cloudreve win映射网络驱动器WebDav
linux 搭建cloudreve win映射网络驱动器WebDav