Java中的网络编程(一)

一、网络编程概述

什么是计算机网络把不同区域的计算机(广义)通过通信设备和线路连接,可以实现数据的传输和共享的系统。实现不同计算机之间的练习,必须有介质连接。网络编程是干什么的聊天-->聊天软件 QQjava语言是支持网络间的数据传输的,将底层的细节都封装起来了,给程序员提供了一套标准的类库,可以很方便的使用java语言开发出进行网络通信的软件
网络编程:借助计算机网络实现我们所写的程序可以在不同的电脑上进行数据传输
网络编程的核心问题如何找到网络世界上的目标主机,以及目标软件win+r -->cmd-->ipconfig 查看自己电脑的ip如何安全可靠的进行数据传输-->协议 规则
网络模型OSI参考模型:理性化标准模型分成七层TCP/IP参考模型实际使用的参考模型实际分为四层:应用层(http)⬇运输层(协议)       ^逐层解析⬇               |网络层(IP)         |⬇               |物理层(硬件、网卡)-->物理层
通信要素:ip 端口 协议ip:IP地址是指互联网协议地址,又译为网际协议地址网络中的计算机使用IP地址来进行唯一标识.在Windows系统下,打开cmd,输入命令ipconfig,按回车即可查看(局域网)连接到服务器,会自动分配ip本地回环地址(hostAddress):127.0.0.1 ,它代表设备的本地虚拟接口端口:0--1024是被系统使用或保留的端口号,0——65535是有效端口号我们在定义的时候需要定义1025——65535之间的端口,端口号不可与已有端口冲突协议(规则、规范、约定):规定传输速率,代码结构,出错后如何应对等等规则传输层的重要协议:传输控制协议TCP:客户端向服务器发送数据前,首先要建立连接(测试网络是否通畅)正是传输数据断开前还要相互确认可靠安全但效率相对低TCP三次握手: 先向服务器发送请求服务器收到请求后会给客户端回应客户段为服务器的回应做确认的回应,告知服务器客户端收到了服务器的回复开始传输数据TCP四次挥手:客户端向服务器发送断开请求服务器向客户端做出回应服务器把没传完的数据传输完毕,再向客户端做出回应客户端向服务器的回应做出回应用户数据报协议UDP:报要发送的数据封装成数据报(数据包)数据报包含数据,对方IP,对方端口,只管发送即可,是否发送成功不明确效率相对高但不可靠,可能会丢数据

二、Tcp传输协议实现

服务端

package com.wbc.Internet.homework.TCP;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;public class Severs {static Scanner scanner =new Scanner(System.in);public static void main(String[] args) {try {ServerSocket serverSocket =new ServerSocket(1234);//端口号1234System.out.println("服务器创建成功");Socket socket =serverSocket.accept();System.out.println("客户端连接成功");while(true){java.io.DataInputStream inputStream =new DataInputStream(socket.getInputStream());System.out.println("对方正在输入中……");String s =inputStream.readUTF();System.out.println("客户端:"+s);DataOutputStream outputStream =new DataOutputStream(socket.getOutputStream());String s1 =scanner.next();System.out.println("待输入……");outputStream.writeUTF(s1);}} catch (IOException e) {e.printStackTrace();}}
}

客户端

package com.wbc.Internet.homework.TCP;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.Scanner;public class Clients {static Scanner scanner =new Scanner(System.in);public static void main(String[] args) {try {Socket socket =new Socket("127.0.0.1",1234);//本地回环测试System.out.println("客户端连接成功");while(true){DataOutputStream outputStream =new DataOutputStream(socket.getOutputStream());System.out.println("待输入……");String s =scanner.next();outputStream.writeUTF(s);DataInputStream inputStream =new DataInputStream(socket.getInputStream());System.out.println("对方正在输入……");String s1=inputStream.readUTF();System.out.println("服务器:"+s1);}} catch (IOException e) {e.printStackTrace();}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

汽车EDI:如何与奔驰建立EDI连接?

梅赛德斯-奔驰是世界闻名的豪华汽车品牌,无论是技术实力还是历史底蕴都在全球汽车主机厂中居于领先位置。奔驰拥有多种车型,多元化的产品布局不仅满足了不同用户画像的需求,也对其供应链体系有着极大的考验。 本文将为大家介绍梅赛德斯-奔驰乘…

MySQL故障排查与生产环境优化

目录 引言 一、故障排查 1.1 故障一 1.2 故障二 1.3 故障三 1.4 故障四 1.5 故障五 1.6 故障六 1.7 故障七 1.8 故障八 1.9 故障九 1.10 故障十 1.11 故障十一 二、 生产环境优化 2.1 硬件优化 2.2 查询优化 总结 引言 MySQL是目前企业最常见的数据库之一&…

【Redis】Redis群集的三种模式(主从、哨兵、群集)

redis群集有三种模式,分别是主从同步/复制、哨兵模式、Cluster,下面会讲解一下三种模式的工作方式,以及如何搭建cluster群集 ●主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主…

MySQL、Oracle查看字节和字符长度个数的函数

目录 0. 总结1. MySQL1.1. 造数据1.2. 查看字符/字节个数 2. Oracle2.1. 造数据2.2. 查看字符/字节个数 0. 总结 databasecharbyteMySQLchar_length()length()Oraclelength()lengthB() 1. MySQL 1.1. 造数据 sql drop table if exists demo; create table demo (id …

软件架构复用

1.软件架构复用的定义及分类 软件产品线是指一组软件密集型系统,它们共享一个公共的、可管理的特性集,满足某个特定市场或任务的具体需要,是以规定的方式用公共的核心资产集成开发出来的。即围绕核心资产库进行管理、复用、集成新的系统。核心…

【Spring】SpringBoot整合MybatisPlus的基本应用

📝个人主页:哈__ 期待您的关注 一、MybatisPlus简介 先来看一下官方的简介吧。 MyBatis-Plus (简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。Myb…

【快速解决】python缺少了PyQt5模块的QtMultimedia子模块

目录 问题描述 问题原因 解决方法 成功示范 问题描述 Traceback (most recent call last): File "d:\桌面\python项目\DesktopWords-master\main.py", line 4, in <module> from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent ModuleNotFoundEr…

OpenCV入门例程:裁剪图片、模糊检测、黑屏检测

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 本例程运行环境为CentOS7&…

深入浅出 -- 系统架构之分布式常见理论概念

随着计算机科学和互联网的发展&#xff0c;分布式场景变得越来越常见&#xff0c;能否处理好分布式场景下的问题&#xff0c;成为衡量一个工程师是否合格的标准。本文我们介绍下分布式系统相关的理论知识&#xff0c;这些理论是我们理解和处理分布式问题的基础。 CAP理论 CAP…

NoSQL之 Redis配置

目录 关系数据库与非关系型数据库 关系型数据库&#xff1a; ●非关系型数据库 关系型数据库和非关系型数据库区别&#xff1a; &#xff08;1&#xff09;数据存储方式不同 &#xff08;2&#xff09;扩展方式不同 对事务性的支持不同 非关系型数据库产生背景 Redis简介…

智能停车场物联网远程监控解决方案

智能停车场物联网远程监控解决方案 智能停车场物联网远程监控解决方案是一种集成了现代物联网技术、大数据分析以及云计算等先进技术手段&#xff0c;对停车场进行全面智能化管理的综合系统。它通过实时感知、精准采集和高效传输各类停车数据&#xff0c;实现对停车场运营状态…

YOLOv3

YOLOv3 论文简介论文内容1. 采用darknet53FPN结构2. 边框预测保持与YOLOv2保持一致3. 沿用YOLOv2 kmeans生成先验anchors4.类别预测改为多分类格式 论文简介 论文&#xff1a;《YOLOv3: An Incremental Improvement》 作者&#xff1a;Joseph Redmon, Ali Farhadi 论文下载地址…

Flume进阶学习!

本文图片来自于8.flume实时监控文件hdfs sink使用演示_哔哩哔哩_bilibili Apache Flume 的启动过程及其配置文件和脚本 在官网下载的Flume的压缩包中&#xff0c;.lib文件有大量的jar包&#xff0c;按道理说只有.lib文件就可以运行Flume程序了。只不过需要java -jar命令还要加…

Vue使用高德地图(快速上手)

1.在高德平台注册账号 2.我的 > 管理管理中添加Key 3.安装依赖 npm i amap/amap-jsapi-loader --save 或 yarn add amap/amap-jsapi-loader --save 4.导入 AMapLoade import AMapLoader from amap/amap-jsapi-loader; 5.直接上代码&#xff0c;做好了注释&#xff08;初…

基于单片机的有害气体检查系统设计

**单片机设计介绍&#xff0c;基于单片机的有害气体检查系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的有害气体检查系统设计旨在实现对环境中各种有害气体的实时监测与报警&#xff0c;保障人员健康和环境…

【QT+QGIS跨平台编译】056:【pdal-dimbuilder+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、pdal介绍二、dimbuilder介绍三、pdal下载四、文件分析五、pro文件六、编译实践七、生成Dimension.hpp八、生成pdal_features.hpp一、pdal介绍 PDAL(Point Data Abstraction Library)是一个开源库,用于处理点云数据的获取、过滤、转换、分析和…

常见的数据库操作

一、查看数据库及表 1.查看当前 DMBS 中有哪些数据库 show databases; (首先进入数据库) 2.查看当前数据库中有哪些表 show tables; 3.查看表的结构&#xff08;信息&#xff09; describe 表名;如&#xff1a;describe orders; 二、创建删除数据库 1.创建数据库 create databa…

文字超出收起展开功能的实现(vue2)

1.编写展开收起组件 <template><div class"text-clamp"><div class"text" :style"{height}"><span v-if"isVisible" class"btn" click"toggle">{{isExpand ? 收起 : ... 展开}}</spa…

PurpleKeep:提供Azure管道以创建基础设施并执行Atomic测试

关于PurpleKeep PurpleKeep是一款功能强大的安全测试自动化工具&#xff0c;该工具能够通过提供Azure管道以创建基础设施&#xff0c;并帮助广大研究人员执行Atomic测试。 随着攻击技术种类的迅速增加&#xff0c;以及EDR&#xff08;端点检测和响应&#xff09;和自定义检测规…

DeepWalk论文翻译

DeepWalk论文翻译 DeepWalk: Online Learning of Social Representations DeepWalk&#xff1a;社会表征的在线学习 ABSTRACT 我们提出了 DeepWalk&#xff0c;一种学习网络中顶点潜在表示的新方法。这些潜在表示在连续向量空间中对社会关系进行编码&#xff0c;很容易被统…