Java第21章网络通信

news2024/11/19 18:41:39

网络程序设计基础
        网络程序设计编写的是与其他计算机进行通信的程序。Java 已经将网络程序所需要的元素封

装成不同的类,用户只要创建这些类的对象,使用相应的方法,即使不具备有关的网络支持,也可

以编写出高质量的网络通信程序。

局域网与互联网
        为了实现两台计算机的通信,必须用一个网络线路连接两台算计。

服务器是指提供信息的计算机程序

客户机是指请求信息的计算机或程序

网络用于连接服务器与客户机,实现两者的相互通信。但是,有时在某个网络中很难将服务器与客户机区分开。局域网 (LAN) 是一群通过一定形式连接起来的计算机,它可以由两台计算机组成,也可以由同一区域内地上千台计算机组成。将 LAN 延伸到更大的范围,这样的网络成为广域网(WAN)。互联网是由无数的 LAN 和 WAN 组成的。

网络协议
        网络协议规定了计算机之间连接的物理、机械(网络与网卡的连接规定)、电气(有效的电平范围)等特征,计算机之间的相互寻址规则,数据发送冲突的解决方式,长数据如何分段传送与接收等内容。

  IP协议
        IP 是 Internet Protocol 的简称,是一种网络协议。Internet 网络采用的协议是 TCP/IP协议。TCP/IP 模式是一种层次结构,共分为 4 层,分别为应用层、传输层、互联网层和网络层。各层实现特定的功能,提供特定服务和访问接口,并具有相对的独立性。

端口域套接字
        一般而言,一台计算机只有单一的连接到网络的物理连接,所以的数据读通过此连接对内、

对外送达特定的计算机,这就是端口。网络程序设计的端口(port)并非真实的物理存在,而是一

个假想的连接装置。

        网络程序中的套接字(Socket)用于将应用程序 与端口连接起来。套接字是一个假想的连接装置,就像插座一样可以连接电器与电线。

TCP 程序

        TCP 网络程序设计是利用 Socket 类编写通信程序。利用 TCP 协议进行通信的两个应用程序是有主次之分的,一个称为服务器程序,另一个称为客户机程序,两者的功能和编写方法大不一样。

ServerSocket 类
          java.net 包中的 ServerSocket 类用于表示服务器套接字,其主要功能是等待来自网络上的

“请求”,它可以通过指定的端口来等待连接的套接字。服务器套接字一次可以与一个套接字。如果

多台客户机同时提供出连接请求,服务器套接字会将请求连接的客户机存入列队中,然后从中取出

一个套接字,与服务器新建的套接字连接起来。若请求连接大于最大容纳数,则多出的连接请求被

拒绝。队列的默认大小是 50。

        ServerSocket 类的构造方法通常会抛出 IOException 异常,具体有以下几种形式:

UDP 程序
        用户数据报协议 (UDP) 是网络信息传输的另一种形式。基于 UDP 的通信和基于 TCP 的通信基于 UDP的信息传递更快,但不提供可靠性保证。使用 UDP 传递数据时,用户无法知道数据能否正确地到达主机,也不能确定到达目的地的顺序是否和发送相同。虽然 UDP 是一种不可靠的员议,但如果需要较快地传输信息,并能容忍小的错误,可以考虑使用 UDP。

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
 
 
 
public class Demo21_3 extends Thread{
	String weather="节目预报:八点有大型晚会,请收听";
	int port=9898;
	InetAddress  iaddress=null;
	MulticastSocket socket=null;
	
	Demo21_3(){
		try {
			iaddress=InetAddress.getByName("224.225.10.1");
			socket=new MulticastSocket(port);
			socket.setTimeToLive(1);
			socket.joinGroup(iaddress);
			}catch(IOException e) {
			e.printStackTrace();
		}
	}
	
	public void run() {
		while(true) {
		DatagramPacket packet=null;
		byte date[]=weather.getBytes();
		packet=new DatagramPacket(date,date.length,iaddress,port);
		System.out.println(weather);
		
			try {
				socket.send(packet);
				sleep(3000);
			}  catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
			
	
	}
	public static void main(String[] args) {
		Demo21_3 w=new Demo21_3();
		w.start();
 
	}
 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1298170.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手把手带你创建HAL版本MDK工程模板

手把手带你创建HAL版本MDK工程模板 如何快速开发 STM32 项目?我们总不能每次开发一个项目就搭建一次工程,这样效率太低了。 通常我们会使用一个模板工程,需要开发新项目的时候拿出来添加一些对应的模块及业务代码,一个项目就开发…

BearPi Std 板从入门到放弃 - 先天篇(1)(阶段 : 智慧城市 - 智慧路灯)

简介 对前面几篇整合, 做个小小汇总试验, 使用BearPi E53_SC1扩展板主芯片: STM32L431RCT6串口: Usart1扩展板与主板连接: I2C : I2C1 (光照强度传感器:BH1750)LED: PB9步骤 创建项目 参考 BearPi Std 板从入门到放弃 - 引气入体篇(1)(由零创…

LabelImg的使用及注意事项

LabelImg是一款开源的图像标注工具,它主要用于标注目标检测、语义分割和图像分类等深度学习中需要的数据集。通过使用LabelImg,用户可以快速、准确地为图片中的目标添加标注信息,从而建立数据集。 使用步骤: 下载LabelImg&#x…

word中,文本框如何跨页?

我们经常使用word编辑一些文档,文档中往往会有一些比较大的文本框,需要跨多页,我们可以使用本文章中的方法,将文本框连接在一起,是的内容自动跨页。 在文字中插入两个文本框如下图: 将内容放到第一个文本框…

基于SpringBoot的大学活动平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着互联网技术的不断…

Kotlin:内置函数let、also、with、run、apply

前言 在Kotlin中,有一些用于扩展 & 方便开发者编码的内置函数,能大大提高开发者的开发效率。今天,我将主要讲解的是: let函数also函数with函数run函数apply函数 基础知识:接口回调中Lambda使用 在Kotlin中可使用…

Carla自动驾驶仿真六:pygame多个车辆摄像头画面拼接

此文章主要介绍carla前后左右摄像头画面拼接到pygame上 文章目录 前言一、要点分析二、完整代码三、拼接效果四、总结 前言 1、使用carla做仿真测试或者开发时,如果能够将车辆周边的画面拼接并渲染,可以直观地查看周围地环境,便于调试。本文…

SpringBoot 自动装配原理详解

什么是 SpringBoot 自动装配? 我们现在提到自动装配的时候,一般会和 Spring Boot 联系在一起。但是,实际上 Spring Framework 早就实现了这个功能。Spring Boot 只是在其基础上,通过 SPI 的方式,做了进一步优化。 Spr…

社区分享|简米Ping++基于MeterSphere开展异地测试协作

上海简米网络科技有限公司(以下简称为“简米”)是国内开放银行服务商,高新技术企业,中国支付清算协会会员单位。自2014年成立至今,简米长年聚焦金融科技领域,通过与银行、清算组织等金融机构合作&#xff0…

python爬虫学习-批量爬取图片

python爬虫学习-批量爬取图片 爬虫步骤爬取前十页图片到本地根据页码获取网络源码使用xpath解析网页解析网页并下载图片主函数如下 爬取的网站为站长素材(仅做学习使用) 爬取的目标网站为 https://sc.chinaz.com/tupian/qinglvtupian.html如果爬取多页&…

【ArcGIS Pro微课1000例】0051:创建数据最小几何边界范围(点、线、面数据均可)

本实例为专栏系统文章:创建点数据最小几何边界(范围),配套案例数据,持续同步更新! 文章目录 一、工具介绍二、实战演练三、注意事项一、工具介绍 创建包含若干面的要素类,用以表示封闭单个输入要素或成组的输入要素指定的最小边界几何。 工具界面及参数如下所示: 核心…

Python Reflex框架全攻略:手把手教你打造个性化全栈应用!

更多资料获取 📚 个人网站:ipengtao.com Reflex框架是一款专注于全栈开发的现代 JavaScript 框架,它强调响应式编程和简化复杂性,为开发者提供了构建动态且高效的全栈应用的工具。 Reflex框架是为了解决传统全栈开发中的一些挑战…

在python中安装库,会有conda安装,也会有pip安装,conda与pip的区别是什么?

文章目录 一、Conda是什么?二、pip是什么?三、pip与conda的区别:总结 一、Conda是什么? Conda是一个开源的包管理系统,它是Anaconda公司为Python和其他编程语言开发的。它主要用于数据科学和机器学习领域,…

通过Mock玩转Golang单元测试!

1.单元测试中的困难 如果项目中没有单元测试,对于刚刚开始或者说是规模还小的项目来说,效率可能还不错。但是一旦项目变得复杂起来,每次新增功能或对旧功能的改动都要重新手动测试一遍所有场景,费时费力,而且还有可能…

windows的cmd/PowerShell修改中文字符编码

1.简介 由于编程的时候经常会用到不同的编码,但是由于cmd/bat脚本和命令行默认的编码不一致,就导致了输出的中文乱码,使用chcp命令可以修改当前命令行的编码方式 2.查看与修改 2.1.查看 chcp 常用编码编号 65001:UTF-8936&am…

Python-pdf工具自制(合并、拆分、删除)

pdf工具,之前写的合并工具有点麻烦,使用PyQt5库重写合并拆分和删除指定页面的程序 实现如图: 代码: import sysimport osfrom PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QFileDia…

P10 Linux进程编程 fork创建子进程

目录 前言 01 fork()创建子进程 示例 1使用 fork()创建子进程。 02 fork创建新进程时发生了什么事? 2.1 父、子进程中对应的文件描述符指向了相同的文件表 前言 🎬 个人主页:ChenPi 🐻推荐专栏1: 《Linux C应用编程&#xf…

SystemVerilog学习(0)——目录与传送门

一、验证导论 SystemVerilog学习(1)——验证导论-CSDN博客文章浏览阅读403次。SystemVerilog自学,验证系统概述,什么是SVhttps://blog.csdn.net/apple_53311083/article/details/133953016 二、数据类型 SystemVerilog学习&…

hive自定义函数及案例

一.自定义函数 1.Hive自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展。 2.当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数。 3.根据用户自定义…

文献速递:多模态影像组学文献分享:多模态图注意力网络用于COVID-19预后预测

文献速递:多模态影像组学文献分享:多模态图注意力网络用于COVID-19预后预测 01 文献速递介绍 在处理像 COVID-19 这样的新出现的疾病时,患者和疾病特定因素(例如,体重或已知共病)对疾病的即时进展的影响…