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.mzph.cn/news/794150.shtml

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

相关文章

从人机界面设计黄金三法则视角看 ChatGPT 的界面设计的“好”与“坏”

热门文章推荐: (1)《为什么很多人工作 3 年 却只有 1 年经验?》(2)《一文掌握大模型提示词技巧:从战略到战术巧》(3)《AI 时代,程序员的出路在何方&#xff1…

数组方法汇总

数组和链表类似,都是用双指针,但数组不需要额外的指针,可以使用索引来当作指针。(链表的时候要注意,什么时候是移动的指针,什么时候是改变的节点)删除有序数组中的重复项 注意,本题中…

36.基于CAS实现的java类

JUC, java.util.concurrent并发工具包下。 1.原子整数 AtomicInteger AtomicLong AtomicBoolean 底层用的CAS来实现。 AtomicInteger类的incrementAndGet方法,addAndGet方法 public static void main(String[] args) {AtomicInteger atomicInteger new Atom…

Coursera自然语言处理专项课程04:Natural Language Processing with Attention Models笔记 Week01

Natural Language Processing with Attention Models Course Certificate 本文是学习这门课 Natural Language Processing with Attention Models的学习笔记,如有侵权,请联系删除。 文章目录 Natural Language Processing with Attention ModelsWeek 01…

c# wpf style 简单试验

1.概要 wpf style 用来控制控件的样式 2.代码 <Window x:Class"WpfApp2.Window5"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.…

MCAL SPI配置

用的是Qspi0 SpiDriver 要配置 4个选项 Spichannel SpiExternalDevice SpiJob SpiSequence Mcu 模块配置 dma配置

开发环境->生产环境

1、数据迁移 不涉及docker # 以数据库用户导出数据 mysqldump -h 192.168.1.168 -P 3307 -u abragent -pabragebb17 abragent > abragent.sql# 以root用户导出数据 mysqldump -h 192.168.1.168 -P 3307 -u root -p8d3Ba1b abragent > abragent.sql 涉及docker …

递归算法练习

递归算法是所有算法中较难的一种&#xff0c;依靠他代码的简洁和清晰地逻辑很受人们喜欢&#xff0c;但是新手入门递归还是会被他不同寻常的思路吓到&#xff0c;其实面对递归问题我们只需要看清题目&#xff0c;分析出要求&#xff0c;有清晰的解题思路&#xff0c;只要仔细分…

软考--软件设计师(软件工程总结2)

目录 1.测试方法 2.软件项目管理 3.软件容错技术 4.软件复杂性度量 5.结构化分析方法&#xff08;一种面向数据流的开发方法&#xff09; 6.数据流图 1.测试方法 软件测试&#xff1a;静态测试&#xff08;被测程序采用人工检测&#xff0c;计算机辅助静态分析的手段&…

虚拟机打不开

问题 另一个程序已锁定文件的一部分&#xff0c;进程无法访问 打不开磁盘“G:\centeros\hadoop104kl\hadoop100-cl2.vmdk”或它所依赖的某个快照磁盘。 模块“Disk”启动失败。 未能启动虚拟机。 原因 前一次非正常关闭虚拟机导致.lck 文件是VMWare软件的一种磁盘锁文件&…

特定领域软件体系结构

1.DSSA的定义 简单地说&#xff0c;DSSA&#xff08;Domain Specific Software Architecture&#xff09;就是在一个特定应用领域中为一组应用提供组织结构参考的标准软件体系结构。 从功能覆盖的范围的角度有两种理解DSSA中领域的含义的方式&#xff1a; &#xff08;1&#x…

极海APM32电机驱动板记录(二)

文章目录 1、解除写保护2、极海驱动板资源概述3、新建工程4、点灯5、嘀嗒定时器6、中断7、串口打印8、adc读取9、i2c尝试10、定时器测试11、电机驱动pwm测试 上一篇文章算是简单了解了一下极海的板子开发环境吧&#xff0c;结果前几天板子来了&#xff0c;然后发现一个大bug&am…

继承 多态 接口 抽象

继承&#xff1a; 继承需要我们学习的点&#xff1a; 什么是继承&#xff0c;继承的好处继承的特点子类到底能继承父类的那些内容&#xff1f;继承中&#xff1a;成员变量的访问特点继承中&#xff1a;成员方法的访问特点继承中&#xff1a;构造方法的特点This,super使用总结…

Docker Desktop 不支持 host 网络模式

先把这个结论的放在前面&#xff0c;直接访问链接就能看到官方文档中已经明确说了不支持。 参考链接&#xff1a;docker desktop for windows 不支持 host 网络模式 以前对于 docker 的网络模式&#xff0c;一直只是了解&#xff0c;没有亲自尝试过。结果今天在尝试 docker 的 …

如何同时安全高效管理多个谷歌账号?

您的业务活动需要多个 Gmail 帐户吗&#xff1f;出海畅游&#xff0c;Gmail账号是少不了的工具之一&#xff0c;可以关联到Twitter、Facebook、Youtube、Chatgpt等等平台&#xff0c;可以说是海外网络的“万能锁”。但是大家都知道&#xff0c;以上这些平台注册多账号如果产生关…

蓝桥集训之垒骰子

蓝桥集训之垒骰子 核心思想&#xff1a;矩阵乘法 f[i]存顶面数值 构造a矩阵 使得*f[i] f[i-1]a 则f[i] f[1] * an 快速幂优化 #include <iostream>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;const int N 6,m…

Oracle APEX 23.2版本 使用应用程序工作副本进行协作开发

现状描述&#xff1a; 当前APEX协作开发都是在同一应用程序下进行的&#xff0c;这样做有可能因同一时间对同一数据进行操作造成锁表或其他问题&#xff0c;Oracle APEX23.2版本迭代后新增了部分功能&#xff0c;可以创建应用程序的工作副本来修复错误、添加功能&#xff0c;然…

C++ setmap

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;C知识分享⏪   &#x1f69a;代码仓库:C高阶&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多C知识   &#x1f51d;&#x1f51d; 目录 前言 一.树形结构的关联式容器 &#x…

移动开发技术历史演化简介h5,跨平台,原生的各种技术实现方案的简单介绍

移动端的开发技术是指针对移动设备如智能手机和平板电脑等便携终端进行应用程序和服务创建的过程。本文将主要介绍一下移动端的开发技术的历史进化历程。讲述h5&#xff0c;跨平台&#xff0c;原生的各种技术实现方案和他们各自的优势与不足。 移动开发&#xff0c;不仅是编程技…

在Ubuntu系统下连接远程Ubuntu服务器

本篇文章介绍&#xff0c;如何在Ubuntu系统下连接远程Ubuntu系统并传输文件。 一. 连接远程Ubuntu服务器。 1. 打开命令行&#xff0c;输入 : sudo apt-get update &#xff0c; 对系统进行更新。 2. 安装 OpenSSH Server&#xff0c;输入 &#xff1a; sudo apt-get insta…