网络编程套接字(2)——Socket套接字

简介: 网络编程套接字(2)——Socket套接字

一、概念


       Socket套接字,是由系统提供用于网络通信的技术,是基于TCP / IP协议的网络通信的基本操作单元。

       操作系统提供给我们进行网络编程的 API 就叫做  "Socket API",网络编程套接字,这里的socket的翻译是插槽,插座的意思。

       基于Socket套接字的网络程序开发就是网络编程.。


二、分类


       要想进行网络编程,需要使用系统的API,本质上还是传输层提供的。

       传输层涉及到的协议,主要是这两个:TCP,UDP。由于这两个协议之间的差异还是挺大的,它们API的差异也比较大。

       Socket套接字主要针对传输层协议分为如下三类:


1、流套接字(使用传输层TCP协议)

               TCP,即Transmission Control Protocol(传输控制协议),传输层协议。


TCP的特点

       1、有连接

               不是物理上的连接,虚拟的连接,比如打电话,打电话者拨号,接电话者要点击接通才能进行通信,连接的特点得是双方都能认同。


       2、可靠传输

               网络上存在的 “异常情况” 是非常多的,无论使用什么软硬件技术手段,都无法100%保证,网络数据一定能从 A 传输到 B。

               这里的可靠传输,主要指的是发送的数据到没到,发送方都能清楚的感知到。

       3、面向字节流

               此处谈到的字节流和文件IO中的字节流完全一样,网络传输的基本单位是字节。

       4、全双工

               一个信道,可以双向通信,比如像斑马线上的马路,同一时间,对面的人既可以对面走过来,也可以从我这里走到对面。

       5、有接受缓冲区,也有发送缓冲区

       6、大小不限


       对于字节流来说,可以简单理解为,传输数据是基于IO流,流式数据的特征就是在IO流没有关闭的情况下,是无边界的数据,可以多次发送,也可以分开多次接收。(网络传输的基本单位是字节)


2、数据报套接字(使用传输层UDP协议)

       UDP,即User Datagram Protocol(用户数据报协议)。传输层协议。


UDP的特点

       1、无连接

               则是发微信 / 发短信,无论你是否同意,消息都能给你发送过去。

       2、不可靠传输

               发送的数据到没到,发送方不都能清楚的感知到。

       3、面向数据报

               每次传输的基本单位是一个 数据报(由一系列的字节构成的),特定的结构。

       4、全双工

               半双工就只能单向通信,比如羽毛球桶的羽毛球,同一时间,只能从一个方向取出羽毛球来。

       5、有接受缓冲区,也有发送缓冲区

       6、大小受限,一次最多传输64k

       对于数据报来说,可以简单地理解为,传输数据是一块一块的,发送一块数据假如100字节,必须一次发送,接收也必须一次接收100字节,而不能分100次,每次一个字节。


3、原始套接字

       原始套接字用于自定义传输层协议,用于读写内核没有处理的IP协议数据。我们不学习原始套接字,简单了解即可。


相关文章
|
5天前
|
Java 数据挖掘 开发者
Java网络编程进阶:Socket通信的高级特性与应用
【6月更文挑战第21天】Java Socket通信是分布式应用的基础,涉及高级特性如多路复用(Selector)和零拷贝,提升效率与响应速度。结合NIO和AIO,适用于高并发场景如游戏服务器和实时数据分析。示例展示了基于NIO的多路复用服务器实现。随着技术发展,WebSockets、HTTP/2、QUIC等新协议正变革网络通信,掌握Socket高级特性为应对未来挑战准备。
|
5天前
|
网络协议 安全 Java
Java网络编程入门涉及TCP/IP协议理解与Socket通信。
【6月更文挑战第21天】Java网络编程入门涉及TCP/IP协议理解与Socket通信。TCP/IP协议包括应用层、传输层、网络层和数据链路层。使用Java的`ServerSocket`和`Socket`类,服务器监听端口,接受客户端连接,而客户端连接指定服务器并交换数据。基础示例展示如何创建服务器和发送消息。进阶可涉及多线程、NIO和安全传输。学习这些基础知识能助你构建网络应用。
14 1
|
9天前
|
网络协议 Java API
【Java】Java Socket编程:建立网络连接的基础
【Java】Java Socket编程:建立网络连接的基础
15 1
|
1天前
|
Java 机器人 大数据
如何在Java中进行网络编程:Socket与NIO
如何在Java中进行网络编程:Socket与NIO
|
2天前
|
网络协议
逆向学习网络篇:通过Socket建立连接并传输数据
逆向学习网络篇:通过Socket建立连接并传输数据
5 0
|
5天前
|
监控 算法 Java
socket网络编程详解
socket网络编程详解
|
4天前
|
Java
【实战演练】JAVA网络编程高手养成记:URL与URLConnection的实战技巧,一学就会!
【6月更文挑战第22天】在Java网络编程中,理解和运用URL与URLConnection是关键。URL代表统一资源定位符,用于标识网络资源;URLConnection则用于建立与URL指定资源的连接。通过构造URL对象并调用openConnection()可创建URLConnection。示例展示了如何发送GET请求读取响应,以及如何设置POST请求以发送数据。GET将参数置于URL,POST将参数置于请求体。练习这些基本操作有助于提升网络编程技能。
|
4天前
|
数据采集 Java 开发者
JAVA网络编程深度探索:URL与URLConnection的精湛技艺
Java网络编程核心在于URL和URLConnection。URL是资源的唯一标识,用于定位网络资源,支持解析、编码解码及参数操作。URLConnection则实现数据交换,允许GET/POST请求,可定制请求头、设置超时,是网络交互的关键。两者结合,适用于网络爬虫等场景,深入学习能提升编程技巧并揭示网络编程奥秘。
|
4天前
|
XML JSON 搜索推荐
【高手过招】JAVA网络编程对决:URL与URLConnection的高级玩法,你敢挑战吗?
【6月更文挑战第22天】在Java网络编程中,URL与URLConnection是核心工具,高手利用它们进行高级操作。从定制请求头(如User-Agent和Authorization)以适应不同场景,到利用POST请求发送复杂数据,甚至是通过设置代理(HTTP或SOCKS)穿越网络障碍,以及运用异步处理和流操作提升效率,每个技巧都是提升网络交互的关键。通过深入学习和实践,开发者可以在网络编程领域不断提升,应对各种挑战。
|
4天前
|
Java
【思维导图】JAVA网络编程思维升级:URL与URLConnection的逻辑梳理,助你一臂之力!
【6月更文挑战第22天】Java网络编程中,URL是资源定位器,用于解析和创建网络地址;URLConnection接口负责建立到URL资源的连接。示例展示了如何使用URL类获取协议、主机、端口和路径,以及如何通过HttpURLConnection进行GET/POST请求,设置超时并处理响应。思维导图概述了从创建URL到设置请求属性、发送请求及处理响应的完整流程,帮助理解两者在网络编程中的作用。

热门文章

最新文章