网络编程入门概述,Socket类和ServerSocket类概述,简单TCP通信

网络编程二(TCP通信+ServerSocket+Socket) 而TCP通信是严格区分客户端和服务器端的,在通信时,必须先由客户端去连接服务器端才能实现通信,服务器端不能主动连接客户端。ServerSocket对象负责监听某台客户端计算机的端口号,在创建ServerSocket对象后,需要继续调用该对象的accept()方法,接收来自客户端的请求。当执行了accept()方法后,服务器端程序会发生阻塞,直到客户端发出连接请求,accept()方法才会返回一个Socket()对象用于和客户端实现通信,程序才能继续向下执行。反之,用于读取服务器端发送的数据。 阅读详情

网络编程入门概述,Socket类和ServerSocket类概述,简单TCP通信

软件结构

C/S结构:全称为Client/Server结构,是指客户端和服务器结构,常见程序有QQ等。
B/S结构:全称为Browser/Server结构,是指浏览器和服务器结构,常见浏览器有Chrome等。
两种结构各有优势但是都离不开网络,网络编程就是在一定的协议下实现两台计算机的通信。

网络通信协议

网络通信协议:通过计算机网络可以使多台计算机实现连接,位于同一个网络总的计算机在进行连接和通信时需要遵守一定的规则,在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式,传输速率,传输步骤等做了统一规定,双方要遵守规定才能完成数据交换。

TCP/IP协议:传输控制协议/因特网互联数据协议(Transmission Control Protocol/Internet Protocol),是Internet最基本广泛的协议,它定义了计算机如何连入因特网,以及数据如何在他们之间传输的标准。它的内部包含一系列的用于处理数据通信的协议,并采用了4层的分层模型,每一层都呼叫它的下一层所提供的协议来完成自己的需求。
链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤,网线提供的驱动。
网络层:网络层是这个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络。
运输层:主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议。
应用层:主要负责应用程序的协议,例如HTTP协议,FTP协议等。

UDP协议:用户数据报协议(User Datagram Protocol)。UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。
由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频,视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况及时偶尔丢失一两个数据包,也不会对接收结果产生太大影响。
但是在使用UDP协议时,由于UDP协议的面向无连接性,不能保证数据的完整性,因此在传输重要数据时,不建议使用UDP协议。

TCP协议:传输控制协议(Transmission Control Protocol)TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建议逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。
在TCP连接中必须要明确客户端和服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过三次握手。
三次握手:TCP协议中,在发送数据的准备阶段,客户端和服务器之间的三次交互,以保证连接的可靠。
第一次握手:客户端向服务器端发出连接请求,等待服务器确认。
第二次握手:服务器端向客户端回送一个响应,通知客户端收到了连接请求。
第三次握手:客户端再次向服务器端发送确认消息,确认连接。

网络编程三要素

协议

协议:计算机网络通信必须遵守的规则。

IP地址

IP地址:指互联网协议地址,俗称IP,IP地址用来给一个网络中的计算机设备做唯一的编号。

IP地址分类:
IPv4:是一个32位的二进制数,通常被分为4个字节,表示成a.b.c.d的形式,其中abcd都是0-255之间的十进制整数,那么最多可以表示42亿个。

IPv6:由于互联网的蓬勃发展,IP地址的需求越来越大,但是网络地址资源有限,使得IP地址分配紧张,为了扩大地址空间,拟通过IPv6重新定义地址空间,采用128位地址长度,没16个字节一组,分成8租十六机制数,表示成ABCD:EF01:2345:6789:ABCD:EF01:2345:6789,解决了网络地址资源不够的问题。

端口号

如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的进程了。

端口号:用两个字节表示的整数,它的取值范围是0-65535。其中,0-1023之间的端口号用于一些知名的网络服务和应用,普通的应用程序需要使用1024以上的端口号,如果端口号被另外一个服务或者进程占用,会导致当前应用程序启动失败。

利用协议+IP地址+端口号,就可以标识网络中的进程了,那么进程间的通信就可以利用这个标识与其他进程进行交互。

常用端口号:
1.默认端口80。
2.数据库,MySQL:3306,Oracle:1521
3.Tomcat服务器:8080

简单TCP通信程序

TCP通信能实现两台计算机之间的数据交互,通信的两端,要严格区分为客户端Client和服务端Server。

两端通信时步骤:
1.服务端程序,需要事先启动,等待客户端的连接。
2.客户端主动连接服务器端,连接成功才能通信,服务端不可以主动连接客户端。

在java中,提供了两个雷用于事先TCP通信程序:
1.客户端:java.net.Socket类表示。创建Socket对象,向服务器端发出连接请求,服务端响应请求,两者建立连接开始通信。
2.服务端:java.net.ServerSocket类表示。创建ServerSocket对象,相当于开启一个服务,并等待客户端的连接。

注意:服务器没有IO流,所以服务器端是用客户端的Socket对象的IO流和客户端进行通信的。

Socket类

Socket类:该类实现客户端套接字,套接字指的是两台设备之间通讯的端点。

构造方法:
Socket(String host,int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。

参数:
String host:服务器主机的名称/服务器的IP地址
int port:服务器的端口号

成员方法:
OutputStream getOutputStream() 返回此套接字的输出流。
InputStream getInputStream() 返回此套接字的输入流。

实现步骤:
1.创建一个客户端对象Socket,构造方法绑定服务器的IP地址和端口号。
2.使用Socket对象中的方法getOutputStream()获取网络字节输出流OutputStream对象。
3.使用网络字节输出流OutputStream对象中的方法write,给服务器发送数据。
4.使用Socket对象中的方法getInputStream()获取网络字节输入流InputStream对象。
5.使用网络字节输入流InputStream对象中的方法read,读取服务器回写的数据。
6.释放资源(Socket)

注意:
1.客户端和服务器端进行交互,必须使用Socket中提供的网络流,不能使用自己创建的流对象。
2.当我们创建客户端对象Socket的时候,就会去请求服务器和服务器经过3此握手建立连接通路,这时如果服务器没有启动,那么就会抛出异常,如果服务器启动了,那么就可以正常交互了。

ServerSocket类

ServerSocket类:该类实现服务器套接字。

构造方法:
ServerSocket( int port) 创建绑定到特定端口的服务器套接字。

参数:
int port:端口号

成员方法:
Socket accept() 监听并接受到此套接字的连接,返回一个Socket对象。

实现步骤:
1.创建服务器ServerSocket对象和系统要指定的端口号。
2.使用ServerSocket对象中的方法accept,获取到请求的客户端对象。
3.使用Socket对象中的方法getInputStream()获取网络字节输入流InputStream对象。
4.使用网络字节输入流InputStream对象中的方法read,读取客户端发送的数据。
5.使用Socket对象中的方法getOutputStream()获取网络字节输出流OutputStream对象。
6.使用网络字节输出流OutputStream对象中的方法write,给客户端回写数据。
7.释放资源(Socket,ServerSocket)。

Java网络编程——TCP通信 Java网络编程 第二章 TCP通信 2.1 概述 TCp通信实现两个计算机进行数据交互 ,通信的两端要严格区分服务器(Server)和客户端(Client) 通信步骤 ​ 1.先启动服务器端,然后等待客户端连接; ​ 2.客户端主动连接服务器端,连接成功才能通信。服务端不能主动连接客户端。 Java中提供了两个用于实现TCP通信的类 ​ 1.客户端:java.net.Socket类表示。创建Socket对象,向服务器端发出连接请求,服务器响应请求,两者建立连接; ​ 2.服务端:java.net.Se 阅读详情

相关推荐

CloudCompare实战:5分钟搞定点云数据预处理(含常见格式转换技巧)

本文提供了一套基于CloudCompare的5分钟点云数据预处理实战指南。文章详细讲解了如何利用这款开源工具,快速完成点云数据的格式转换(如LAS转PLY)、统计离群值降噪、体素网格下采样以及交互式裁剪等核心操作,帮助用户高效清理和规整杂乱数据,为后续分析建模奠定基础。

weixin_29207533的博客 477

从0学开发笔记-网络编程

端口号 TCp通信 TCP的服务器和客户端编程 package day07; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.Socket; /* TCP通信的客户端:向服务器发送请求,给服务器发送数据,读取服务器回写的数据 表示客户端的类: ja

weixin_42595206的博客 134

MTK眼中6G物理层与无线协议的进化之路

提议统一波束和小区级的测量、报告和切换框架/流程,进一步减少移动性切换过程中的中断,采用可扩展框架/流程,允许在不同移动性场景中进行部分用户设备配置更新以实现快速切换,支持用户设备发起的移动性(同步/切换)以降低延迟和因信令交换导致的失败,设计移动性RS以实现空闲状态下的节能和连接状态下的无缝用户体验,实现5G/6G间的无缝互操作移动性,为固定无线接入(FWA)提供潜在增强,构建统一的跨层移动性框架以降低复杂度、减少中断和失败。为适应多样化的流量类型,需要灵活的帧结构和高层时间对齐。

asd199086的博客 1745

简单的TCP网络程序(socket/serversocket)

TCP通信分析图解 1.【服务端】启动,创建ServerSocket对象,等待连接。 2.【客户端】启动,创建Socket对象,请求连接。 3.【服务端】接收连接,调用accept方法,并返回一个Socket对象。 4.【客户端】Socket对象,获取OutputStream,向服务端写出数据。 5.【服务端】Scoket对象,获取InputStream,读取客户端发送的数据。 到此,客户端向服务...

weixin_45246465的博客 260

深入解析线性反馈移位寄存器(LFSR)的工作原理与实现

本文深入解析了线性反馈移位寄存器(LFSR)的核心原理与实现方法。通过生动的比喻和详细的步骤拆解,阐述了LFSR如何通过反馈多项式和移位操作生成伪随机序列,并对比了斐波那契型与伽罗瓦型两种硬件结构。文章还涵盖了LFSR在数字电路测试、通信扰码及快速伪随机数生成等关键应用场景,同时指出了其在密码学中的局限性,并提供了Python和C语言的高效实现代码示例。

weixin_29007243的博客 544

Silvaco Atlas新手入门:从安装到第一个半导体器件仿真(附DeckBuild配置)

本文为Silvaco Atlas新手提供了一份从软件安装、DeckBuild环境配置到完成第一个半导体器件仿真的实战指南。通过构建一个经典的PN结二极管案例,详细讲解了Atlas仿真语句的语法、核心命令顺序以及结果调试与可视化方法,帮助初学者快速上手并理解TCAD仿真流程。

sql99的博客 332

TCP网络编程

需要用到两个类来编写TCP的cs程序 1、ServerSocket 搭建服务器 2、Socket 搭建客户端 ServerSocket用来搭建服务器,搭建完毕后,会绑定一个端口号。 然后此服务器可以等待客户端连接。 每连接一个客户端,服务器就会得到一个新的Socket对象,用于跟客户通信。 Socket是两台计算机之间通信的端点。一边持有一个socket对象,来沟通。socket像电话的作用。 ...

m0_60563771的博客 593

手把手教你学RDMA驱动开发专栏--第7章 队列对(QP)与数据传输实现​7.3 完成队列(CQ):事件通知机制与轮询/中断模式

本章详细探讨了RDMA驱动中完成队列(CQ)的事件通知机制,重点分析了轮询与中断两种模式的实现原理及优化策略。CQ作为操作结果的报告载体,其核心功能包括结果反馈、事件通知和资源同步。轮询模式通过主动查询实现低延迟,适合高性能场景;中断模式通过被动通知节省CPU资源,适用于低频事件处理。驱动实现需考虑CQ溢出防护、多QP共享同步等关键问题,并提供事件通道机制将CQE传递给用户态。通过对比两种模式的优缺点及适用场景,揭示了RDMA系统在性能与资源间的权衡机制。

MHD0815的博客 396

快速会学习java网络编程Socket与ServerSocket,带有简单案例

网络编程 TCP:三次握手,效率不高,但很稳 UDP:效率高,但不安全,可能丢包 IP:指互联网协议地址,给一个网络中的计算机设备作唯一编号 端口号:计算机上的网络软件都会占用一个端口号(指定或随机)(0-65535之间)(1024以前已经被使用) Socket TCP通信的客户端向服务器发送连接请求,给服务器发送数据,读取服务器回写的数据 表示客户端的类: java.net.Socket:此类实现客户端套接字,套接字是两台机器间通信的断点 套接字:包含了ip地址和端口号的网络单位 构造函数: public

东的博客 268

YOLO26改进 - SPPF模块 | 发论文神器!LSKA注意力改进SPPF,增强多尺度特征提取能力,高效涨点!!!

本文介绍了Large Separable Kernel Attention (LSKA)模块及其在YOLO26中的结合应用。LSKA旨在解决Visual Attention Networks (VAN)使用大内核卷积时的计算效率问题,通过将2D深度卷积层的卷积核分解为级联的水平和垂直1-D卷积核,降低了计算复杂度和内存占用,且使VAN更关注物体形状。我们将集成LSKA的SPPF_LSKA模块引入YOLO26,大量实验表明,改进后的模型在对象识别、检测、分割和稳健性测试上表现出色。

魔改工程师的博客 252

UG NX二次开发(C#)-读取PMI对象的名称

摘要:本文介绍了在UG NX中通过NXOpen获取PMI对象名称的方法。首先说明PMI对象初始无名称,可通过重命名或属性设置名称。然后提供C#代码示例,展示如何遍历PMI集合获取对象名称,并显示名称和类型信息。适用于需要操作PMI对象的开发人员,欢迎加入技术交流QQ群749492565。(99字)

GimiGimmy 591

【Java网络编程】TCP通信(Socket 与 ServerSocket)和UDP通信的三种数据传输方式

TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象 通信之前要保证连接已经建立(注意TCP是一定要建立连接的) TCP是通过Socket产生I0流来进行网络通信的,所以发送端和接收端的两个流的方向是不一样的,比如客户端和服务器进行通信(通信前要确保建立了连接),然后客户端向服务器发送了“你好帅”,这一次发送数据的过程,它们流的方向是不一样的,针对客户端来说,它是往外发所以用的是输出流,而针对服务器来说,它是接收数据所以用的是输入流。

m0_65277261的博客 2857

iStoreOS路由器(openwrt软路由) AdGuard Home 客户端 IP 总是 localhost(127.0.0.1)?这样设置让你精准识别真实IP!

在iStoreOS等软路由上部署AdGuard Home时,客户端IP常显示为localhost(127.0.0.1)。本文详细介绍如何让adguardhome直接识别客户端真实IP🌐,帮助你实现网络流量的精准追踪和管理。🔍

XiaoqiangClub的博客 2253

Java网络编程之通过代码实现Socket通信

概述 Socket类 构造方法 成员方法 ServerSocket类 构造方法 成员方法 简单的TCP网络程序 TCP通信分析图解 客户端向服务器发送数据 服务器向客户端回写数据

write less , do more 9332

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Statistics and Machine Learning Toolbox

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

【Java基础教程】(四十七)网络编程篇:网络通讯概念,TCP、UDP协议,Socket与ServerSocket类使用实践与应用场景~

本文介绍了网络编程的概念以及与之相关的TCP和UDP协议。我们探讨了Java中的Socket和类,这些重要的API用于实现网络通信。通过一个简单的实战示例——Echo程序,我们展示了如何使用Java进行网络编程,并解释了其工作原理。网络编程在现代应用开发中扮演着至关重要的角色。它允许不同主机之间的数据交互,使得分布式系统成为可能。同时,网络编程也适用于各种场景,包括客户端-服务器通信、网络爬虫和数据采集、文件传输和共享、远程过程调用等。

Technology changes the world of life 1718

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Java】TCP网络编程:从可靠传输到Socket实战

手把手实现一个回显服务器/客户端案例。适合开发者掌握TCP编程要点,构建高可靠网络应用。

一年,我很需要这一年 3565

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java网络编程:8、基于TCP的socket编程(一)简单的socket通信_一个客户端

一、基于tcp的编程,就好像用电话进行交谈一样 二、在java中用于编程网络程序的类 三、套接字 + (输出、输入流) 1、服务器程序编写基本步骤: 2、客户端程序编写基本步骤: 四、代码编写 1、服务器端程序的编写 2、客户端程序的编写 3、打印输出 4、你这个sever和client都是在同一个程序当中编写的, 那么我如何在两台机器之间进行通信呢? 五、系列文章(java网络编程)

鲁迷那的专栏—坚持实践后再写出来! 3114

Java网络编程 TCP通信(Socket 与 ServerSocket)

ServerSocket是等待客户端的请求,一旦获得一个连接请求,就创建一个Socket示例来与客户端进行通信。连接到服务器的IP地址和端口。一旦连接建立,双方就可以通过输入输出流进行数据交换.TCP通信涉及两个端点:客户端和服务器。监听特定端口,等待客户端的连接请求。到服务器并发送/接收数据。来自客户端的连接请求。类用于服务器端,用于。

2302_81621310的博客 1287

Java核心类库之(网络编程:网络编程入门、UDP通信程序、TCP通信程序)

录 1 网络编程入门 1.1 网络编程概述 1.2 网络编程三要素 1.3 IP地址 1.4 InetAddress的使用 1.5 端口 1.6 协议 2 UDP通信程序 2.1 UDP通信原理 2.2 UDP发送数据 2.3 UDP接收数据

努力让自己发光,对的人才能迎着光而来 1万+

网络编程三要素、TCP通信、Socket类、ServerSocket类

网络编程三要素 协议:计算机中网络通信必须遵守的规则。 IP地址:互联网协议地址(Internet Protocol Address) ,俗称IP,给网络中的计算机设备编订一个唯一的编号,好比人的身份证号。 IP地址分类: IPv4:是一个32位的二进制数,通常被分为4个字节,表示形式:a.b.c.d ,例如:192.168.53.245 ,其中a.b.c.d都是一个0~255之间的十进制的整数,那么最多能够表示42亿个。 IPv6:为了扩大地址空间,通过IPv6重新定义地址空间,采用128

zza791043251的博客 407

基于TCP协议的Socket通信

这里写自定义目录标题欢迎使用Markdown编辑器TCP/IP协议网络编程三要素java中提供了两个类用于实现TCP通信程序:简单的TCP网络程序客户端与服务端通信实现的代码 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 TCP/IP协议...

HeapAndStack的博客 1237

【网络编程】简述TCP通信程序,三次握手,四次挥手

TCP(Transmission Control Protocol)是传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。在程序员的网络编程中,TCP可以说是使用最频繁的网络协议之一。那么TCP通信程序是如何工作的呢?本文将详细介绍TCP通信的程序示例、三次握手、四次挥手等过程,帮助大家深入理解TCP通信的内在运行机制。TCP通信需要客户端与服务端建立连接后才能相互发送数据。

小吉妙妙屋 1280

Java网络编程 Socket、ServerSocket 详解,方法介绍及完整代码示例

Java网络编程 Socket、ServerSocket 详解,方法介绍及完整代码示例

csdn_bajie 3804

网络编程 UDP 和 TCP

介绍了网络编程的基本概念和Socket介绍,并介绍Java中UDP和TCP使用,通过一个UDP和TCP分别实现的回显服务器来练习

2401_89019969的博客 1461

Java网络编程之Socket---TCP(一)

Java网络编程之Socket---TCP(一)

weixin_48568302的博客 4310

【Java】网络编程--Socket与TCP网络通信编程

本节中,你将学习到Socket什么,以及使用TCP网络通信编程完成双向通信和上传文件的功能。使用到的技术有TCP字节流编程和TCP字符流编程。通过对上传文件需求的实现,将使你对网络收发保存图片有初步的了解。

黄小黄的博客 1417
上一篇: 缓冲流,转换流,编码,序列化流和反序列化流,静态瞬态关键字,打印流
下一篇: 浅谈Java的类加载机制
wnnSam
博客等级 码龄16年 6粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值