java网络编程

JAVA 网络编程 文章目录1. 网络编程2.计算机网络基础知识2.1 计算机网络:2.2 网络通讯的要素2.3 IP地址2.3.1 IP地址的分配2.3.2 IP地址的分类3. 端 口4. 常用默认端口5.网络通信协议/接口6. OSI的七层模型7. TCP协议8. IP协议(Internet Protocol/因特网互联协议)是网络上的计算机进行连接的基础9. TCP/IP协议9.1 InetAddressSoc... 阅读详情

一、认识网络

1.网络就是连接在一起可以共享数据和资源的一组计算机。

2.计算机网络分类:局域网,城域网,广域网。

3.ip地址:在网络上使用一种具有层次结构的逻辑地址来标识一台计算机,这个地址就叫做ip地址。

4.ip地址是用来唯一标识网络中的每一台计算机。

5.网络地址:标识计算机网络设备的网段。主机地址:标识特定主机或者网络设备。

6.查看本机ip地址:使用dos命令,winl+R键,输入cmd,进入dos窗口,输入ipconfig,查看到本机ip地址!

7.测试网络连接是否通畅:使用dos命令,winl+R键,输入cmd,进入dos窗口,输入ping +本机ip地址。

二、网络同行协议

TCP协议:中文名叫做传输控制协议。TCP是一种面向连接的,可靠的,基于字符流的传输通信协议。保证数据的安全性!

UDP协议:中文名叫做用户数据报协议。UDP协议是一个无连接协议,不需要连接,不安全!

实现基于TCP协议的Socket编程:

socket就是套接字。位于java.net包,可以监听用户的连接请求。

java.net包的两个类:Socekt类和ServerSocket类。

socket对象是在客户端和服务器之间建立连接。表示客户端

ServerSocket对象是等待客户端建立连接,连接建立以后可以进行同信。

代码如下:

// 客户端

public class LoginClient {
	public static void main(String[] args) throws Exception {
		// 1.发送请求到服务器
		// 创建一个客户端的Socket
		Socket socket = new Socket("localhost",8000);
		// 通过输出流发送请求
		String info = "用户名:Tom;密码:123456";
		OutputStream os = socket.getOutputStream();
		os.write(info.getBytes());

		// 相当于告诉服务器,我说的话说完了
		socket.shutdownOutput(); 
		// 2.通过输入流接收服务器给我的响应
		InputStream is = socket.getInputStream();
		BufferedReader br = new BufferedReader(new InputStreamReader(is));
		String reply = null;
		while ((reply = br.readLine())!= null) {
			System.out.println("服务器说:" + reply);
		}

		// 关闭资源
		br.close();
		is.close();
		os.close();
		socket.close();
	}
}


//服务器端
public class LoginServer {
	public static void main(String[] args) throws Exception {
		// 接收客户端请求
		// 创建一个服务器端的Socket
		ServerSocket severSocket = new ServerSocket(8000);
		// 使用accept()侦听并接收到此ServerSocket的连接,并用客服端的Socket接收
		Socket socket = severSocket.accept();
		// 通过Socket获得输入流,获得用户的请求,用字节流输入流接收
		InputStream is = socket.getInputStream();
		// 将字节流包成字符流,字符流包成缓冲流
		BufferedReader br = new BufferedReader(new InputStreamReader(is));
		String info = null;
		while ((info = br.readLine())!= null) {
			System.out.println("客户端说:" + info);
		}

		// 给客户端响应
		String reply = "欢迎登录!";
		// 通过输出流发送给客户端
		OutputStream os = socket.getOutputStream();
		os.write(reply.getBytes());
		
		socket.shutdownOutput();
		Thread.sleep(1000);
		
		
		// 释放相应资源
		os.close();
		br.close();
		is.close();
		socket.close();
		severSocket.close();

	}
}

//注意:在连接完成之后,一定要记得关闭资源,先开的后关,后开的先关。

当然,还可以传递对象信息,进行序列化和反序列化操作就可以。

实现多客户端用户登录,采用多线程的方式,可以在服务端创建一个专门负责监听的应用服务程序,一个专门负责响应的线程程序。

代码如下:

//服务端
public class Sever {
	public static void main(String[] args) throws Exception {
		//建立连接,指定端口开始监听
		ServerSocket serverSocket=new ServerSocket(8000);
		//声明socekt
		Socket socket=null;
		//使用循环,监听一直存在,只要发起请求,就去响应
		while(true) {
			socket=serverSocket.accept();	//使用accept()方法等待客户端发起同信
			MyThread my=new MyThread(socket);
			my.start();
		}
	}
}

//客户端:这里只是创建了一个客户端,可以多创建几个客户端,方便测试!
public class Client {
	public static void main(String[] args) throws Exception{
		//建立客户端连接
		Socket socket=new Socket("localhost",8000);
		//打开输入流,输出流
		OutputStream os=socket.getOutputStream();
		InputStream is=socket.getInputStream();
		
		//发起客户端登录信息,就是向输出流写入信息
		String info="用户名:Jack;密码:456123";
		os.write(info.getBytes());
		//相当于告诉服务器,我说的话已经说完了
		socket.shutdownOutput();
		
		//接收服务端的响应
		String reply=null;
		BufferedReader br=new BufferedReader(new InputStreamReader(is));
		while((reply=br.readLine())!=null) {
			System.out.println("我是客户端,服务器响应是:"+reply);
		}
		
		
		//关闭资源
		br.close();
		is.close();
		os.close();
		socket.close();
		
	}
}

//创建线程类
public class MyThread extends Thread{

	public Socket socket;		//对象属性
	
	/**
	 * 有参构造,传递socket属性过来,没启动一个线程,连接对应的Socket
	 * @param socket
	 */
	public MyThread(Socket socket) {
		this.socket = socket;
	}


	public void run() {
		InputStream is=null;
		OutputStream os=null;
		BufferedReader br=null;
		try {
			//读操作
			is=socket.getInputStream();
			
			//获取客户端信息
			br=new BufferedReader(new InputStreamReader(is));
			String info=null;
			while((info=br.readLine())!=null) {
				System.out.println("我是服务器,客户端登录信息为:"+info);
			}
			
			//给客户端一个响应,
			os=socket.getOutputStream();
			String reply="欢迎你,登录成功!";
			
			os.write(reply.getBytes());
			
			
			socket.shutdownOutput();
			Thread.sleep(2000);
			
		} catch (Exception e) {
				e.getStackTrace();
		} finally {
			//关闭资源
			try {
				os.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			try {
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			try {
				is.close();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
			try {
				socket.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}
	
}

注意:这里的服务器处于一直监听客户端请求,一旦监听到客户请求,就立即去创建一个线程。
线程是接纳客户请求,给予客户一个响应,利用线程的构造方法去绑定客户端的socket。
客户端是发送请求到服务器,接收服务器的响应。

TCU协议和UDP协议的区别

协议TCPUDP
是否连接面向连接无连接
传输可靠性(安全)可靠不可靠
连接速度慢快

 

 

C#与Vector XL驱动库实战:CAN通道配置与端口访问详解 本文详细解析了使用C#调用Vector XL驱动库进行CAN总线通信开发的核心步骤。重点阐述了如何通过XL_GetDriverConfig获取硬件通道信息,并厘清channelMask与accessMask的区别与转换关系,最终指导开发者正确使用XL_OpenPort函数配置并打开CAN端口,为构建稳定的汽车电子测试与诊断应用奠定基础。 阅读详情

相关推荐

别再为数码管引脚发愁了!用STM32的普通IO口驱动TM1650数码管模块(附完整模拟I2C代码)

本文详细介绍了如何利用STM32的普通IO口通过模拟I2C协议驱动TM1650数码管模块,提供了完整的硬件连接方案和软件实现代码。通过模拟I2C技术,开发者可以灵活使用任意GPIO引脚控制多位数码管显示,解决了传统驱动方式占用大量IO资源的问题。文章包含TM1650寄存器解析、亮度控制等实用功能实现,并分享了常见问题排查与性能优化技巧。

weixin_30764771的博客 659

Java网络编程

Java网络编程 1、网络编程 1.1、概述 1、计算机网络是通过传输介质、通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统。网络编程就就是编写程序使联网的两个(或多个)设备(例如计算机)之间进行数据传输。Java语言对网络编程提供了良好的支持,通过其提供的接口我们可以很方便地进行网络编程。 2、Java是 Internet 上的语言,它从语言级上提供了对网络应用程 序的支持,程序员能够很容易开发常见的网络应用程序。 3、Java提供的网络类库,可以实现无痛的网络连

laizhenghua的博客 1万+

Pwntools不只是PWN:用它写个自动化Fuzz脚本,挖掘Linux命令行工具漏洞

本文探讨了如何利用Pwntools构建自动化Fuzz脚本,挖掘Linux命令行工具中的漏洞。通过详细的代码示例和实战案例,展示了Pwntools在Fuzzing中的高效性和灵活性,特别适合快速验证特定场景的安全问题。文章还提供了进阶技巧和避坑指南,帮助安全研究人员快速上手并提升测试效率。

weixin_28718345的博客 221

【Java网络编程详解】

Java网络编程是开发分布式应用程序的重要技能,它通过套接字(Socket)进行数据传输,支持TCP和UDP协议。本文将介绍Java网络编程的基础知识,包括Socket、ServerSocket、TCP通信、UDP通信、常用类和示例代码。网络编程是指在计算机之间通过网络进行数据传输和通信的编程方式。Java提供了强大的java.net包,封装了底层的网络协议,简化了网络编程。:面向连接,可靠传输,保证数据按序到达,适合文件传输、Web通信等。:面向无连接,不可靠但速度快,适合视频通话、广播消息等。

武帝为此的博客 958

CircuitBreaker Resilience4J 介绍

在分布式环境中,我们的应用可能会面临着各种各样的可恢复的异常(比如超时,网络环境异常),此时我们可以利用不断重试的方式来从异常中恢复(Retry Pattern),使整个集群正常运行。然而,也有一些异常比较顽固,突然发生,无法预测,而且很难恢复,并且还会导致级联失败(举个例子,假设一个服务集群的负载非常高,如果这时候集群的一部分挂掉了,还占了很大一部分资源,整个集群都有可能遭殃)。如果我们这时还是不断进行重试的话,结果大多都是失败的。

zzhongcy的专栏 3540

【用unity实现100个游戏之34】使用环状(车轮)碰撞器(Wheel Collider)从零实现一个汽车车辆物理控制系统,实现一个赛车游戏

本文介绍了在Unity中使用Wheel Collider组件实现3D车辆物理控制系统的详细步骤。主要内容包括: Wheel Collider参数详解:包括基础参数(质量、半径等)、悬挂弹簧系统(弹力、减震等)和摩擦力设置(前向/侧向摩擦曲线)。 准备工作流程: 导入赛车模型、赛道和树木素材 为车身添加Rigidbody和MeshCollider 创建四个Wheel Collider并调整参数(半径、悬挂距离等) 优化摩擦系数设置防止侧滑 实现车辆控制: 通过代码控制车轮前后移动和转向 提供底盘系统设置(四轮

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2658

Java语言的网络编程

Java网络编程是一个庞大而复杂的领域,从基本的Socket编程到高级的HTTP处理,Java提供了丰富的工具和类库供开发者使用。了解并掌握Java网络编程,可以帮助开发者构建可靠、高效的网络应用。随着技术的不断发展,网络编程的方法和工具也在不断进步,开发者应保持学习的热情与敏锐的观察力,跟上时代的步伐。希望通过本文的讲解,能帮助您对Java网络编程有更深的理解和认识。无论是构建简单的客户端-服务器模型,还是开发复杂的Web应用,Java都能提供强大的支持。

xiaocaibao777的博客 1218

基于YOLOv8与UI界面的校园垃圾分类督导系统

YOLO(You Only Look Once)是目前最为广泛使用的目标检测算法之一。它通过一次前向传递即完成目标检测,具有极高的速度与效率。YOLOv8是YOLO系列的最新版本,相比于之前的YOLO版本,YOLOv8在速度、精度、检测能力等方面都有了显著的提升。本项目通过结合YOLOv8模型与UI界面,成功实现了校园垃圾分类督导系统。该系统能够自动识别不同类型的垃圾,并通过UI界面实时展示垃圾分类的结果。

YOLO 337

Java—— 网络编程

什么是网络编程 常见软件架构 网络编程三要素:IP:InetAddress。端口号。协议:UDP协议,TCP协议

zjy_ccccc的博客 1254

【Charge】仿真目录

Author: JiJi\textrm{Author: JiJi}Author: JiJi Created Time: 2026.01.20\textrm{Created Time: 2026.01.20}Created Time: 2026.01.20 Modified Time: 2026.01.20\textrm{Modified Time: 2026.01.20}Modified Time: 2026.01.20工作流程材料模型[Charge] 电荷分布与折射率变化理论 [Charge] FDTD

u011699626的博客 316

KEPServerEX 6 之 GE Ethernet 连接FANUC ROBOT机器人实战

GE Fanuc是GE公司控制系统部门的一部分,成立于1998年。其主要业务涵盖工业自动化、控制系统、PLC和组态软件等领域。其产品可用于包括自动化、过程自动化、国防、汽车制造、通讯、医疗和航空航天等各种工业领域2009 8月 GE和FANUC今天宣布两家公司已同意解除合资企业GE FANUC自动化公司。通过以上历史,GE Ethernet Driver 当下还支持对接FANUC ROBOT机器人 就不奇怪了。

-雲飛兄-博客 1791

Java基础之Java网络编程详解

网络编程是现代软件开发中不可或缺的一部分,它通过网络实现了计算机之间的通信,使得信息交换和数据共享成为可能。在网络通信的实现过程中,语言的选择和工具的使用至关重要,而Java提供了强大的支持,使得开发者可以更便捷地构建网络应用程序。网络通信的核心是数据的发送与接收,而Java的网络编程模型为此提供了一套易用且高效的工具。无论是点对点的通信,还是基于更复杂协议的多节点交互,Java都能满足需求。在网络编程中,基础的通信模式是基于Socket的点对点连接,它可以实现客户端和服务器之间的直接通信。

道可道非常道 2067

主成分分析(PCA)简洁高效MATLAB实现详解

本文介绍了一个简洁高效的PCA算法实现。该实现通过SVD分解计算主成分,避免了显式协方差矩阵计算,支持两种降维方式:固定维度或按能量比例自动选择。核心步骤包括数据中心化、SVD分解和维度选择,代码量少但功能完整,适用于数据预处理、降维和特征提取等任务。实现中考虑了稀疏矩阵转换、默认参数处理等细节,可直接应用于MATLAB环境。

m0_62153576的博客 64

Java 之网络编程

本文详细讲解了 Java 网络编程的基础知识和实战代码,包括 TCP 和 UDP 的区别、网络编程的三要素以及使用 Socket 和 DatagramPacket 类实现网络通信。希望这些内容能够帮助各位看官深入了解 Java 网络编程。

weixin_64178283的博客 1834

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【Java 基础】Java 网络编程

Java的网络编程是指使用Java语言进行网络通信的编程技术。在Java中,可以使用Socket和ServerSocket类来实现基于TCP协议的网络通信,也可以使用DatagramSocket和DatagramPacket类来实现基于UDP协议的网络通信。

激流丶的博客 1890

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

十二、Java网络编程

文章目录十二、Java网络编程1.网络编程入门1.1 网络编程概述【理解】1.2 网络编程三要素【理解】1.3 IP地址【理解】1.4InetAddress【应用】1.5端口和协议【理解】2.UDP通信程序2.1 UDP发送数据【应用】2.2UDP接收数据【应用】2.3UDP通信程序练习【应用】3.TCP通信程序3.1TCP发送数据【应用】3.2TCP接收数据【应用】3.3TCP通信程序练习【应用】3.4TCP通信程序练习【应用】3.5TCP通信程序练习【应用】3.6TCP通信程序练习【应用】3.7TCP通

汪随安的博客 2917

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java 网络编程

Java通过java.net和java.nio包提供网络编程支持,支持TCP和UDP协议。TCP使用Socket实现可靠连接通信,包含ServerSocket(服务端)和Socket(客户端);UDP通过DatagramSocket实现无连接通信。示例代码展示了基本的TCP/UDP服务端与客户端实现流程,包括建立连接、数据收发等关键步骤。此外,Java还提供HttpURLConnection类专门处理HTTP协议通信,可方便地发起HTTP请求。这些API为开发网络应用提

weixin_73916358的博客 564

12 java网络编程

网络编程章节,主要是把IO流的知识使用在网络上,用于网络传输。 网络传输其实也是一种IO流的方式。

qq_34106499的博客 415
上一篇: java中的多线程
下一篇: java中的xml解析---------DOM解析
海山的蓝
博客等级 码龄9年 36粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值