网络编程套接字Socket

news2024/10/6 4:04:30

一.什么是网络编程

网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输)

二.为什么要实现网络编程

我们通过网络编程可以在网络中获取资源,实质是通过网络,获取到我们所需要的资源。

三.如何进行网络编程

针对网络编程,操作系统提供了一套专门实现网络编程的API,称为Socket套接字

我们的程序在应用层,操作系统工作在传输层,socket套接字就是传输层提供给应用层的API,传输层中最知名的协议就是TCP和UDP。

四.Socket关键字

Socket关键字针对传输协议分为三类:

①TCP传输协议②UDP传输协议③原始套接字

Tcp传输协议和UDP传输协议的区别:

有连接:相当于打电话,得先接通,才能交互数据

无连接:相当于发微信,不需要接通,直接就能发数据

可靠传输:传输过程中,发送方道知接收方有没有收到数据

不可靠传输:传输过程中,发送方不知道接收方有没有收到数据

面向字节流:以字节为单位进行传输

面向数据报:以数据报为单位进行传输(一个数据报都会明确大小)一次发送/接收必须是一个完整的数据报

全双工:一条链路,双向通信

半双工:一条链路,单向通信

大小限制:打电话可长可短,但是发短信有字数限制。

4.1UDP中的API

主要涉及两个类DatagramSocket(针对服务器上启动的网络服务,对应到服务器上用来接收用户请求的进程)和DatagramPacket(针对通信报文)

在网络编程中收发数据的过程主要是通过网卡来实现的,接收数据是对网卡的读取,发送数据时对网卡的写入。

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

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

相关文章

滑动相关的原理以及用滤波器实现滑动相关(匹配滤波器捕获DMF)

目录滑动相关匹配滤波器捕获(DMF)滑动相关 滑动相关属于一种时域捕获方法,其具体原理是是通过本地序列与接收信号在固定窗长内滑动累加得到相关结果。 一般滑动相关算法可以用于对自相关性非常好的伪码进行同步判决。 我们首先生成一组自相关…

【大数据】第三章:详解HDFS(送尚硅谷笔记和源码)

什么是HDFS HDFS是(Hadoop Distributed File System)的缩写,也即Hadoop分布式文件系统。它通过目录树定位在分布式场景下 在不同服务器主机上的文件。它适用于一次写入,多次读出的场景。 HDFS的优缺点 优点 1,高容…

leaflet 添加zoomslider,控制zoom放大缩小(074)

第074个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中使用zoomslider,相比于普通的zoom控件,这个更加形象,更加具体些。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共65行)相关API参考:专栏目…

14_FreeRTOS二值信号量

目录 信号量的简介 队列与信号量的对比 二值信号量 二值信号量相关API函数 实验源码 信号量的简介 信号量是一种解决同步问题的机制,可以实现对共享资源的有序访问。 假设有一个人需要在停车场停车 1.首先判断停车场是否还有空车位(判断信号量是否有资源) 2.停车场正好…

CSS 中的 BFC 是什么,有什么作用?

BFC,即“块级格式化上下文”(Block Formatting Context),是 CSS 中一个重要的概念,它指的是一个独立的渲染区域,让块级盒子在布局时遵循一些特定的规则。BFC 的存在使得我们可以更好地控制文档流&#xff0…

TensorRT中的常见问题

TensorRT中的常见问题 文章目录TensorRT中的常见问题14.1. FAQs14.2.Understanding Error Messages14.3. Code Analysis Tools14.3.1. Compiler Sanitizers14.3.1.1. Issues With dlopen And Address Sanitizer14.3.1.2. Issues With dlopen And Thread Sanitizer14.3.1.3. Iss…

STM32单片机DHT11数字温湿度监测

OLED液晶接口电路图DHT11传感器接口电路图STM32单片机DHT11数字温湿度监测程序源代码#include "sys.h" #define LED_RED PBout(12) //红色发光二极管控制管脚PB12#define LED_GREEN PBout(13) //绿色发光二极管控制管脚PB13#define LED_YELLOW PBout(14) //黄色发光二…

网络编程原理(1)

一.IP地址:标识了网络上设备所在的位置端口号:标识了一个具体的应用程序二.认识协议:发送方和接收方双方进行的一种约定,发送方约好了我发的数据是啥样的,接收方按照这个固定的格式来进行解析。如果这个协议比较大&…

MongoDB 正则表达式

MongoDB 正则表达式 正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。 MongoDB 使用 $regex 操作符来设置匹配字符串的正则表达式。 MongoDB使用PCRE (Perl Compatible Regular Expression) 作为正则表达式语言。 不同于全文检索,我们使…

有趣的HTML实例(十二) 早安、晚安动画(css+js)

这话在我心里已经复习了几千遍。我深恨发明不来一个新鲜飘忽的说法,只有我可以说只有你可以听,我说过,我听过,这说法就飞了,过去、现在和未来没有第二个男人好对第二个女人这样说。 ——《围城》 目录 一、前言 二、…

MySQL中的事务详解

目录 一.什么是事务 二.事务操作 演示 小结 三.事务的特性 四.事务的隔离级别 概述 四种隔离级别 脏读、不可重复读、幻读 操作 一.什么是事务 在MySQL中的事务(Transaction)是由存储引擎实现的,在MySQL中,只有InnoDB存储引擎才支持…

【动态规划】背包问题题型及方法归纳

背包问题的种类 背包问题是在规定背包容量为j的前提下,每个物品对应的体积为v[i],价值为w[i],从物品0到物品i中选择物品放入背包中,找出符合某种要求的价值。 (1)背包问题种类 01背包:每种物…

访学案例|经济学老师加急英签如期出国

N老师是学校资助的公派访学,指定英国,要求年底前出国。经过努力,我们为其落实了经济学学术研究排名位列全英第五的埃塞克斯大学。为保证预留充足的准备时间,N老师选择了超级加急的AV签证,24小时过签,最终如…

基于 VPX 总线的工件台运动控制系统研究与开发-以光刻运动台为例(一)

工件台系统是光刻机的关键子系统之一,工件台运动控制系统对实现光刻机性能指标具有至关重要的作用,因此研发工件台运动控制系统具有极其重要的工程应用价值。论文根据工件台控制系统必须具备的并行性、同步性和实时性等技术需求,建立了基于 V…

【Kubernetes】CI/CD 简介与 ECS 服务规划

一,前言 去年公司上了一个持续集成平台,设计技术组件与开源工具集,大致如下: 使用 Gitlab 作为代码的管理和托管工具;使用 Gitlab CI 持续集成工具;使用 Docker 开源应用容器引擎;使用 Harbor…

ABO溶血症概率

[简介]ABO溶血是由于母亲和胎儿ABO血型不合引起的新生儿溶血,概率不是很大,一般出现在准妈妈是O血,准爸爸是非O血,这次容易发生血型不合,但新生儿ABO溶血概率不高,大多数症状相对较轻。ABO溶血的概率是什么…

2023美赛必须注意事项

文章目录首页部分要求竞赛期间题目查看题目下载论文要求比赛提示控制号提交解决方案更多注意事项首页部分要求 具体如下: 我提取一些关键词如下: 第一页:摘要页字体要求:12点的 Times New Roman 字体请勿在此页面或任何页面上…

几种在Linux/window下查询外网IP的办法。

hello world curl ifconfig.me/ip如下图 1. 纯文本 https://ifconfig.me/ip https://ipinfo.io/ip 或 https://ipecho.net/ip 或 https://ipecho.net/plain https://www.trackip.net/ip https://icanhazip.com 2. JSON格式 https://ifconfig.me/all.json https://ipi…

见微可视化平台研究(一)

1. Python项目部署 使用容器部署 将Dockerfile拷贝道algo目录: # docker build -t algo:v1 . # docker run -d -p 5000:5000 algo:v12. 部署依赖数据库 2.1 MySQL初始化 MySQL安装忽略,初始化脚本: backend/datascience-service/src/mai…

从0到1一步一步玩转openEuler--16 openEuler使用DNF(YUM)管理软件包组

文章目录16.1 列出软件包组清单16.2 显示软件包组信息16.3 安装软件包组16.4 删除软件包组DNF是一款Linux软件包管理工具,用于管理RPM软件包。DNF可以查询软件包信息,从指定软件库获取软件包,自动处理依赖关系以安装或卸载软件包,…