Java基础(网络编程)

news2025/7/16 4:43:49

一、概述

目的:网络通信:

1、设备和设备

2、进程和进程

  1)不同设备之间

  2)本地设备之间

需要解决的问题:

如何准确地发送到对方的主机 - IP地址 - 唯一的定位网络中的一台主机

如何准确的发送到对方主机的进程 - 端口

找到主机后如何可靠高效地进行数据传输,要能看懂 - 协议 - 规定/标准

二、网络通信要素

如何实现网络中的主机互相通信?

~一定的规则(即:网络通信协议。有两套参考模型)

  OSI参考模型

 TCP/IP参考模型(或TCP/IP协议)

~通信双方地址

IP地址

端口号

2.1、网络协议:

一种规则,人与人交流有语言的规则,计算机之间通过网络交流也要有网络的规则。

2.1.1、OSI参考模型

模型过于理想化,未能在因特网上进行广泛推广 

2.1.2、TCP\IP协议

 出现较早,事实上的标准。

两种协议之间存在对应关系:

传输控制协议(TCP)和网络互联协议(IP),一组协议,不同功能互相关联

2.1.3、TCP和UDP

TCP协议:

使用TCP协议前,须先建立TCP连接,形成传输数据通道;

传输前,采用三次握手方式,是可靠的;

TCP协议进行通信的两个应用进程:客户端、服务端;

在连接中可进行大数据量的传输;

传输完毕,使用四次挥手方式,释放连接,结束传输,效率低。

UDP协议:

将数据、源、目的封装成数据包,不需要建立连接;

每个数据报的大小限制在64KB内;

因无需连接,故是不可靠的;

发送数据结束时无需释放资源,速度快。

三次握手过程:

四次挥手过程

 2.2、IP地址和端口号

2.2.1、IP地址

唯一的标识Internet上的计算机(通信实体)

分类:

IPV4:4个字节组成,4个0~255,如192.168.0.1

IPV6:128位(16个字节),写成8个无符号整数,每个整数用四个十六进制表示

如:3ffe:3201:1401:1280:c8ff:fe4d:db39:198

2.2.2、端口号省略。。。

三、TCP编程_服务器和客户端

目标:

1、客户端能够连接服务器

2、客户端能够给服务器发送字符串并在服务器的控制台打印,直到发送exit表示发送结束

这里见源码及其注释:

import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

/*
* 服务器
* */
public class Server {
    public static void main(String[] args) throws IOException {
        //创建监听套接字 最大端口65535
        ServerSocket serverSocket = new ServerSocket(60000);
        while (true) {
            //创建已连接套接字 - 返回表示有客户端连接
            Socket socket = serverSocket.accept();
            //获取客户端的IP和端口
            System.out.println(socket.getInetAddress().getHostAddress() + ":" + socket.getPort() + "已连接");

            int len = 0;
            byte[] arr = new byte[1024];
            //IO操作
            InputStream in = socket.getInputStream();
            while(true) {
                len = in.read(arr, 0, arr.length);
                if(len == -1) {
                    break;
                }
                //byte[] --> String
                String s = new String(arr, 0, len);
                System.out.println(s);
            }

            //关闭
            socket.close();
        }


    }
}
package day31;

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

public class Client {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);

        //创建套接字 -- 如果成功表示和服务器连接成功
        Socket socket = new Socket("127.0.0.1", 60000);
        //IO操作
        OutputStream out = socket.getOutputStream();
        while(true) {
            //获取用户输入
            String s = sc.next();
            if(s.equals("exit")) {
                break;
            }

            //将输入的数据发送给服务器
            out.write(s.getBytes());
        }
        //关闭
        socket.close();
    }
}

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

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

相关文章

计量——异方差的检验及其修正

目录 1.异方差的检验 1 BP检验 2white检验 2.异方差的修正 1.异方差的检验 1 BP检验 选择检验方法:BP BP检验的实际步骤(非机器): 1.y对所有x进行回归,得到残差u。计算残差的平方u^2 2.u^2对所有x进行回归&#…

学习C++的好书:C++编程之禅

历时四个月,把这本书看了一遍,受益匪浅,推荐给大家,系统的学习一遍C。

OpenCV进阶操作:人脸检测、微笑检测

文章目录 前言一、OpenCV如何实现人脸检测1、haar特征2、级联分类器3、级联分类器的使用 二、人脸检测、微笑检测 案例实现1、预处理2、加载分类器3、标注人脸4、运行结果:4、微笑检测 总结 前言 要实现人脸识别首先要判断当前图像中是否出现了人脸,这就…

车载诊断进阶篇 --- 车载诊断概念

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…

制作一款打飞机游戏49:敌人抖动

蛇形敌人 如果你玩过一些射击游戏(shmups),尤其是老式的射击游戏,你可能会遇到一种敌人,它们像蛇一样移动。我想在我们的游戏中实现这种效果。这种动态的感觉非常棒,我们完全有能力通过动画来实现它。 方…

Pycharm IDEA加载大文件时报错:The file size exceeds configured limit

解决方案:配置一下idea.properties文件 文件里面写入代码: idea.max.intellisense.filesize50000重启IDEA即可;

PDA手持终端应用有哪些?

随着技术进步不断拓展,PDA手持终端其便携性与多功能特性使其成为多行业数字化转型的核心工具。主要包括物流与仓储管理、零售行业、医疗行业以及制造业等。 1.物流与仓储管理 在物流与仓储管理中,PDA手持终端主要用于物品的实时跟踪、库存管理和拣货作业…

Python+Selenium爬虫:豆瓣登录反反爬策略解析

1. 引言 在当今互联网时代&#xff0c;数据抓取&#xff08;爬虫&#xff09;技术广泛应用于数据分析、市场调研、自动化测试等领域。然而&#xff0c;许多网站采用动态加载技术&#xff08;如Ajax、React、Vue.js等框架&#xff09;来渲染页面&#xff0c;传统的**<font s…

电总协议调试助手更新-PowerBus-v1.0.5

电总协议调试助手&#xff0c;该工具主要是用于打包电总协议&#xff0c;用于电总协议的设备调试&#xff08;精密空调、UPS、基站电源等等&#xff09;。电总协议校验计算、编码转换比较麻烦&#xff0c;手动组包困难&#xff0c;使用该工具可以大大提高调试效率。 Ver1.0.5版…

技术文档:变频器干扰问题与解决方案

1. 引言 在现代工业自动化系统中&#xff0c;变频器&#xff08;Variable Frequency Drive, VFD&#xff09;因其高效节能和精确调速的特点被广泛应用于电机控制。然而&#xff0c;变频器在运行过程中会产生高频电磁干扰&#xff08;EMI&#xff09;&#xff0c;对周边设备如P…

2025认证杯数学建模C题思路+代码+模型:化工厂生产流程的预测和控制

2025认证杯数学建模C题思路代码模型&#xff0c;详细内容见文末名片 在化工厂的生产流程中&#xff0c;往往涉及到多个反应釜、管道和储罐等设备。在 流水线上也有每个位置的温度、压力、流量等诸多参数。只有参数处于正常范 围时&#xff0c;最终的产物才是合格的。这些参数…

亚马逊,temu测评采购低成本养号策略:如何用一台设备安全批量管理买家账号

只要能够巧妙规避平台的检测和风控措施&#xff0c;测评便可安全进行。 自养号测评&#xff0c;它更便于卖家掌控&#xff0c;且能降低风险。现在很多卖家都是自己养号&#xff0c;自己养号都是精养&#xff0c;不是自动的机刷&#xff0c;买家账号掌握在自己手里&#xff0c;更…

SiFli-SDK 编译

1.编译报错 scons: *** No SConstruct file found. 出现这个错误是没有正确进入到工程目录执行编译命令&#xff0c;例如应该进入project目录中。 2.scons: *** [build_em-lb525_hcpu\src\resource\strings\en_us.c] AttributeError : dict object has no attribute iteritem…

C++多态实现的必要条件剖析

在C中&#xff0c;多态的一个必要条件确实是通过基类的指针或引用调用虚函数。这一要求背后的原因与C如何实现动态绑定&#xff08;运行时多态&#xff09;密切相关。下面详细解释了为什么需要使用基类的指针或引用来实现多态。 动态绑定与静态绑定 静态绑定&#xff08;编译期…

C语言_自动义类型:联合和枚举

1. 联合体 1.1 联合体类型的声明 与结构体相似&#xff0c;联合体也是有一个或多个成员&#xff08;可以是不同类型&#xff09;构成&#xff1b;但是编译器只为最大的成员分配足够的内存空间 联合体的特点是所有成员共用同一块内存空间&#xff0c;所以联合体也叫&#xff…

汽车紧固件涂层18问:看敦普无铬锌铝涂料如何为螺丝防锈防腐

导读 在汽车紧固件防锈涂装领域&#xff0c;敦普牌紧固件无铬锌铝涂料&#xff0c;是专为汽车紧固件打造的水性涂料&#xff0c;集防锈、环保、高性价比于一体。它有何独特之处&#xff1f;让我们一探究竟。​ 1、敦普紧固件无铬锌铝涂料是什么产品&#xff1f; 敦普紧固件无铬…

掘金中亚货代蓝海,易境通货代系统解锁数字化制胜密码!

2025年&#xff0c;中亚地区正成为全球物流行业的新蓝海。中亚五国因其独特的地缘位置和“一带一路”倡议的深化推进&#xff0c;正逐渐成为全球物流行业的战略要地。 在政策红利、基建升级与市场需求的叠加效应下&#xff0c;中亚物流市场预计在2025年迎来爆发式增长。但传统…

W1R3S: 1.0.1靶场

W1R3S: 1.0.1 来自 <W1R3S: 1.0.1 ~ VulnHub> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182&#xff0c;靶场IP192.168.23.249 3&#xff0c;对靶机进行端口…

[Mamba轻量化]DefMamba: Deformable Visual State Space Model,CVPR2025

paper 文章目录 AbstractMethod整体模型架构可变形状态空间模型 Experiments Abstract 然而&#xff0c;大多数现有的视觉Mamba方法使用预定义的扫描顺序将图像展平为1D序列&#xff0c;导致模型在特征提取过程中对图像空间结构信息的利用能力减弱。为解决这一问题&#xff0…

找银子 题解(c++)

题目 思路 首先&#xff0c;这道题乍一看&#xff0c;应该可以用搜索来做。 但是&#xff0c;搜索会不会超时间限制呢&#xff1f; 为了防止时间超限,我们可以换一种做法。 先创立两个二维数组&#xff0c;一个是输入的数组a&#xff0c;一个是数组b。 假设 i 行 j 列的数…